UNPKG

@pipedream/coda

Version:

Pipedream Coda Components

125 lines (119 loc) 2.82 kB
import coda from "../../coda.app.mjs"; export default { key: "coda-find-row", name: "Find Row", description: "Searches for a row in the selected table using a column match search. [See docs](https://coda.io/developers/apis/v1#operation/listRows)", version: "0.0.3", type: "action", props: { coda, docId: { propDefinition: [ coda, "docId", ], }, tableId: { propDefinition: [ coda, "tableId", (c) => ({ docId: c.docId, }), ], }, columnId: { propDefinition: [ coda, "columnId", (c) => ({ docId: c.docId, tableId: c.tableId, }), ], description: "ID of the column. This field is required if querying", optional: true, }, query: { propDefinition: [ coda, "query", ], description: "Query used to filter returned rows", optional: true, }, sortBy: { propDefinition: [ coda, "sortBy", ], description: "Specifies the sort order of the rows returned. If left unspecified, rows are returned by creation time ascending", options: [ "createdAt", "natural", "updatedAt", ], }, visibleOnly: { propDefinition: [ coda, "visibleOnly", ], }, useColumnNames: { type: "boolean", label: "Use Column Names", description: "Use column names instead of column IDs in the returned output", optional: true, }, valueFormat: { type: "string", label: "Value Format", description: "The format that individual cell values are returned as", optional: true, options: [ "simple", "simpleWithArrays", "rich", ], }, max: { propDefinition: [ coda, "max", ], }, }, async run({ $ }) { let params = { sortBy: this.sortBy, visibleOnly: this.visibleOnly, useColumnNames: this.useColumnNames, valueFormat: this.valueFormat, }; if (this.columnId && this.query) { params.query = `${this.columnId}:"${this.query}"`; } let items = []; let response; do { response = await this.coda.findRow( $, this.docId, this.tableId, params, ); items.push(...response.items); params.pageToken = response.nextPageToken; } while (params.pageToken && items.length < this.max); if (items.length > this.max) items.length = this.max; if (items.length > 0) { $.export("$summary", `Found ${items.length} rows`); } else { $.export("$summary", `No rows found with the search query: ${this.query}`); } return { items, }; }, };