This automations page is moving! We've been working hard at building out our tools documentation at tools.slack.dev — the new home of our Deno Slack SDK and Slack CLI docs! You can start using the new docs today, but we'll keep the content on both sites up to date during the transition.

Update a spreadsheet

Connector functions are a new addition to Slack automations. We recommend understanding the systems and APIs you're integrating with before setup.

Facts

Update a spreadsheet

Schema: Connectors.GoogleSheets.functions.UpdateSpreadsheetRow
Service: Google Sheets

Input parameters

Required parameters
Determines whether this connector will use the credentials of the user starting the workflow or the credentials configured by an app collaborator. See the Authentication section on this page for details.

Example
{ credential_source: "END_USER" }
The ID of the spreadsheet

Example
"1234567890_abcdefg_1q2w3e4r5t6y7u"
The title of the sheet which contains the row to update

Example
"Prospect emails"
The name of the column that contains the cell value that will be used to determine which row to update

Example
"email"
An object where each key is a string containing a numerical index representing a column you want to update. The corresponding values are the updated contents to be associated with the individual cells in those columns. The keys, in this case, serve as string representations of column indices. You only need to include the specific column indices and corresponding values of the columns you want to update (and remember: the columns are zero-indexed)

Example
{ "1": "scott2@slack.tld" }
Optional parameters
The cell value to look for in the column provided by column_name to determine which row to update

Output parameters

Required parameters
The values in each column for the row that was updated
Spreadsheet URL
Time when step started
Time when step ended

Authentication

A connector's access token property specifies how the connector handles authentication.

End-user authentication

user Workflows that include a connector function relying on end-user authentication can can only be started with a link trigger.

google_access_token: {
    credential_source: "END_USER"
}

End-user experience: User will be prompted to link their external account via OAuth when they first start the workflow that contains this connector.

Developer experience: Developer does not have to implement authentication in app.

How to use

First, import Connectors from deno-slack-hub into your project's import_map.json file, like this:

{
  "imports": {
    "deno-slack-hub/": "https://deno.land/x/deno_slack_hub@2.2.0/",
    "deno-slack-sdk/": "https://deno.land/x/deno_slack_sdk@2.14.2/",
    "deno-slack-api/": "https://deno.land/x/deno_slack_api@2.8.0/",
  }
}

Next, import Connectors at the top of your workflow's definition file:

// my_workflow_file.ts
import { Connectors } from "deno-slack-hub/mod.ts";

Finally, add the connector as a step in your workflow just like you would a built-in Slack function.

SomeWorkflow.addStep(
  Connectors.GoogleSheets.functions.UpdateSpreadsheetRow, {
    // The ID of the spreadsheet
    spreadsheet_id: "1234567890_abcdefg_1q2w3e4r5t6y7u",

    // Update a row in the "Prospect emails" sheet
    sheet_title: "Prospect emails",

    // Use the "email" column in the "Prospect emails" sheet to find the row to update
    column_name: "email",

    // (Optional) Update the row where the value in the "email" column is "scott.slacksalot@slack.tld"
    // cell_value: "scott.slacksalot@slack.tld",

    // Update a row in the 'Prospect emails' sheet: set email to 'scott2@slack.tld' where the cell value in the "email" column is "scott.slacksalot@slack.tld" (assumes that the header for the zero-indexed column "1" is "email")
    updated_values: {
        "1": "scott2@slack.tld"
      },

    google_access_token: { credential_source: "END_USER" }
  }
);

The following formulas cannot be used (for example, by attempting to update a row using =HYPERLINK("https://slack.com", "link")). This is to prevent malicious actors from using formula injection to cause any security issues.

  • HYPERLINK

  • IMPORTDATA

  • IMPORTFEED

  • IMPORTHTML

  • IMPORTRANGE

  • IMPORTXML

  • ISURL

  • IMAGE

🧙🏼 Your admin may need to approve the connector first. If your workspace has been configured to only allow admin-approved apps, the CLI will prompt you to send an admin approval request the first time you try to use a connector that hasn't been approved by an admin yet. While waiting for admin approval, the CLI may report an error like this:

Workflow function... is referring to an unknown step output parameter...

You can safely ignore this error; it will go away as soon as your workspace admin approves your request to use the connector.