Setu Recipes: reusable workflows across every app.Browse templates

Integrations / Smartsheet

Smartsheet

Work management in spreadsheet form: sheets, rows, cells and row comments.

8 actions OAuth 2 4 read3 write1 destructive Calls api.smartsheet.com

Connect

TypeScript
const conn = await setu.connections.initiate({ userId: "user_1", toolkit: "smartsheet" });
console.log(conn.connectUrl); // show this to your user
await conn.waitUntilActive();

Permissions requested

ScopeWhy it is requested
READ_SHEETSRead your sheets, rows and cells, and search them
WRITE_SHEETSAdd, change and delete rows, and comment on rows

Actions

Add rowswritesmartsheet.add_rowsAdd one or more rows to a sheet. Each row is an object with cells (columnId and value) and optionally toTop or toBottom (true) to choose the position.

Needs scope: WRITE_SHEETS

InputTypeDescription
sheet_idintegerRequiredSheet ID
rowsarray of objectRequiredRows to add: [{"toBottom": true, "cells": [{"columnId": 123, "value": "text"}]}]
TypeScript
await setu.execute({
  userId: "user_1",
  action: "smartsheet.add_rows",
  input: {
    "sheet_id": 1,
    "rows": []
  },
});
Comment on rowwritesmartsheet.comment_on_rowStart a discussion on a row with a first comment.

Needs scope: WRITE_SHEETS

InputTypeDescription
sheet_idintegerRequiredSheet ID
row_idintegerRequiredRow ID
textstringRequiredComment text
TypeScript
await setu.execute({
  userId: "user_1",
  action: "smartsheet.comment_on_row",
  input: {
    "sheet_id": 1,
    "row_id": 1,
    "text": "<text>"
  },
});
Delete rowsdestructivesmartsheet.delete_rowsPermanently delete rows from a sheet by row ID.

Needs scope: WRITE_SHEETS

InputTypeDescription
sheet_idintegerRequiredSheet ID
row_idsarray of integerRequiredIDs of the rows to delete
TypeScript
await setu.execute({
  userId: "user_1",
  action: "smartsheet.delete_rows",
  input: {
    "sheet_id": 1,
    "row_ids": []
  },
  confirm: true,
});
Get current userreadsmartsheet.get_current_userGet the connected Smartsheet user's ID, name, email and account.

No input.

TypeScript
await setu.execute({
  userId: "user_1",
  action: "smartsheet.get_current_user",
  input: {},
});
Get sheetreadsmartsheet.get_sheetGet a sheet's columns (IDs, titles, types) and rows with cell values. Use page_size to limit rows, and the column IDs it returns to add or update rows.

Needs scope: READ_SHEETS

InputTypeDescription
sheet_idintegerRequiredSheet ID from list_sheets or search
pageintegerOptionalPage of rows, starting at 1
page_sizeintegerOptionalRows per page
column_idsarray of integerOptionalOnly return these columns
row_idsarray of integerOptionalOnly return these rows
TypeScript
await setu.execute({
  userId: "user_1",
  action: "smartsheet.get_sheet",
  input: {
    "sheet_id": 1
  },
});
List sheetsreadsmartsheet.list_sheetsList the sheets the user can access with their IDs, names and links. Returns one page (100 sheets by default).

Needs scope: READ_SHEETS

InputTypeDescription
pageintegerOptionalPage number, starting at 1
page_sizeintegerOptionalSheets per page (default 100)
TypeScript
await setu.execute({
  userId: "user_1",
  action: "smartsheet.list_sheets",
  input: {},
});
Update rowswritesmartsheet.update_rowsChange cell values in existing rows. Each row is an object with the row id and the cells (columnId and value) to change.

Needs scope: WRITE_SHEETS

InputTypeDescription
sheet_idintegerRequiredSheet ID
rowsarray of objectRequiredRows to update: [{"id": 456, "cells": [{"columnId": 123, "value": "new"}]}]
TypeScript
await setu.execute({
  userId: "user_1",
  action: "smartsheet.update_rows",
  input: {
    "sheet_id": 1,
    "rows": []
  },
});