UNPKG

@pipedream/smartsheet

Version:

Pipedream Smartsheet Components

106 lines (100 loc) 2.64 kB
import smartsheet from "../../smartsheet.app.mjs"; export default { key: "smartsheet-add-row-to-sheet", name: "Add Row to Sheet", description: "Adds a row to a sheet. [See docs here](https://smartsheet.redoc.ly/tag/rows#operation/rows-addToSheet)", version: "0.0.2", type: "action", props: { smartsheet, sheetId: { propDefinition: [ smartsheet, "sheetId", ], reloadProps: true, }, toTop: { type: "boolean", label: "To Top", description: "Set to `true` to add new row to the top of the sheet", optional: true, default: false, }, cells: { type: "string[]", label: "Cells", description: "Array of objects representing cell values. Use to manually create row when `sheetId` is entered as a custom expression. Example: `{{ [{\"columnId\": 7960873114331012,\"value\": \"New status\"}] }}`", optional: true, }, }, async additionalProps() { const props = {}; const { data: columns } = await this.smartsheet.listColumns(this.sheetId, { params: { include: "columnType", }, }); if (!columns) { return props; } for (const column of columns) { props[column.id] = { type: "string", label: column.title, description: column?.description || "Enter the column value", optional: true, }; if (column.type.includes("CONTACT_LIST")) { props[column.id] = { ...props[column.id], options: async ({ page }) => { const { data } = await this.smartsheet.listContacts({ params: { page, }, }); return data?.map(({ email }) => email ) || []; }, }; } else if (column?.options) { props[column.id].options = column.options; } } return props; }, async run({ $ }) { const { sheetId, toTop, cells = [], smartsheet, ...columnProps } = this; const data = { cells: [], }; if (toTop) { data.toTop = true; } for (const cell of cells) { const cellValue = typeof cell === "object" ? cell : JSON.parse(cell); data.cells.push(cellValue); } for (const key of Object.keys(columnProps)) { data.cells.push({ columnId: key, value: columnProps[key], }); } const response = await smartsheet.addRow(sheetId, { data, $, }); $.export("$summary", `Successfully created row with ID ${response.result.id}`); return response; }, };