n8n-nodes-base
Version:
Base nodes of n8n
806 lines • 41.5 kB
JavaScript
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
exports.Coda = void 0;
const n8n_workflow_1 = require("n8n-workflow");
const ControlDescription_1 = require("./ControlDescription");
const FormulaDescription_1 = require("./FormulaDescription");
const GenericFunctions_1 = require("./GenericFunctions");
const TableDescription_1 = require("./TableDescription");
const ViewDescription_1 = require("./ViewDescription");
class Coda {
description = {
displayName: 'Coda',
name: 'coda',
icon: 'file:coda.svg',
group: ['output'],
version: [1, 1.1],
subtitle: '={{$parameter["operation"] + ": " + $parameter["resource"]}}',
description: 'Consume Coda API',
defaults: {
name: 'Coda',
},
usableAsTool: true,
inputs: [n8n_workflow_1.NodeConnectionTypes.Main],
outputs: [n8n_workflow_1.NodeConnectionTypes.Main],
credentials: [
{
name: 'codaApi',
required: true,
},
],
properties: [
{
displayName: 'Resource',
name: 'resource',
type: 'options',
noDataExpression: true,
options: [
{
name: 'Control',
value: 'control',
description: 'Controls provide a user-friendly way to input a value that can affect other parts of the doc',
},
{
name: 'Formula',
value: 'formula',
description: 'Formulas can be great for performing one-off computations',
},
{
name: 'Table',
value: 'table',
description: 'Access data of tables in documents',
},
{
name: 'View',
value: 'view',
description: 'Access data of views in documents',
},
],
default: 'table',
},
...TableDescription_1.tableOperations,
...TableDescription_1.tableFields,
...FormulaDescription_1.formulaOperations,
...FormulaDescription_1.formulaFields,
...ControlDescription_1.controlOperations,
...ControlDescription_1.controlFields,
...ViewDescription_1.viewOperations,
...ViewDescription_1.viewFields,
],
};
methods = {
loadOptions: {
// Get all the available docs to display them to user so that they can
// select them easily
async getDocs() {
const returnData = [];
const qs = {};
const docs = await GenericFunctions_1.codaApiRequestAllItems.call(this, 'items', 'GET', '/docs', {}, qs);
for (const doc of docs) {
const docName = doc.name;
const docId = doc.id;
returnData.push({
name: docName,
value: docId,
});
}
return returnData;
},
// Get all the available tables to display them to user so that they can
// select them easily
async getTables() {
const returnData = [];
const docId = this.getCurrentNodeParameter('docId');
const tables = await GenericFunctions_1.codaApiRequestAllItems.call(this, 'items', 'GET', `/docs/${docId}/tables`, {});
for (const table of tables) {
const tableName = table.name;
const tableId = table.id;
returnData.push({
name: tableName,
value: tableId,
});
}
return returnData;
},
// Get all the available columns to display them to user so that they can
// select them easily
async getColumns() {
const returnData = [];
const docId = this.getCurrentNodeParameter('docId');
const tableId = this.getCurrentNodeParameter('tableId');
const columns = await GenericFunctions_1.codaApiRequestAllItems.call(this, 'items', 'GET', `/docs/${docId}/tables/${tableId}/columns`, {});
for (const column of columns) {
const columnName = column.name;
const columnId = column.id;
returnData.push({
name: columnName,
value: columnId,
});
}
return returnData;
},
// Get all the available views to display them to user so that they can
// select them easily
async getViews() {
const returnData = [];
const docId = this.getCurrentNodeParameter('docId');
const views = await GenericFunctions_1.codaApiRequestAllItems.call(this, 'items', 'GET', `/docs/${docId}/tables?tableTypes=view`, {});
for (const view of views) {
const viewName = view.name;
const viewId = view.id;
returnData.push({
name: viewName,
value: viewId,
});
}
return returnData;
},
// Get all the available formulas to display them to user so that they can
// select them easily
async getFormulas() {
const returnData = [];
const docId = this.getCurrentNodeParameter('docId');
const formulas = await GenericFunctions_1.codaApiRequestAllItems.call(this, 'items', 'GET', `/docs/${docId}/formulas`, {});
for (const formula of formulas) {
const formulaName = formula.name;
const formulaId = formula.id;
returnData.push({
name: formulaName,
value: formulaId,
});
}
return returnData;
},
// Get all the available view rows to display them to user so that they can
// select them easily
async getViewRows() {
const returnData = [];
const docId = this.getCurrentNodeParameter('docId');
const viewId = this.getCurrentNodeParameter('viewId');
const viewRows = await GenericFunctions_1.codaApiRequestAllItems.call(this, 'items', 'GET', `/docs/${docId}/tables/${viewId}/rows`, {});
for (const viewRow of viewRows) {
const viewRowName = viewRow.name;
const viewRowId = viewRow.id;
returnData.push({
name: viewRowName,
value: viewRowId,
});
}
return returnData;
},
// Get all the available view columns to display them to user so that they can
// select them easily
async getViewColumns() {
const returnData = [];
const docId = this.getCurrentNodeParameter('docId');
const viewId = this.getCurrentNodeParameter('viewId');
const viewColumns = await GenericFunctions_1.codaApiRequestAllItems.call(this, 'items', 'GET', `/docs/${docId}/tables/${viewId}/columns`, {});
for (const viewColumn of viewColumns) {
const viewColumnName = viewColumn.name;
const viewColumnId = viewColumn.id;
returnData.push({
name: viewColumnName,
value: viewColumnId,
});
}
return returnData;
},
},
};
async execute() {
const nodeVersion = this.getNode().typeVersion;
const returnData = [];
const items = this.getInputData();
let responseData;
const resource = this.getNodeParameter('resource', 0);
let qs = {};
const operation = this.getNodeParameter('operation', 0);
if (resource === 'table') {
// https://coda.io/developers/apis/v1beta1#operation/upsertRows
if (operation === 'createRow') {
try {
const sendData = {};
for (let i = 0; i < items.length; i++) {
qs = {};
const docId = this.getNodeParameter('docId', i);
const tableId = this.getNodeParameter('tableId', i);
const options = this.getNodeParameter('options', i);
const endpoint = `/docs/${docId}/tables/${tableId}/rows`;
if (options.disableParsing) {
qs.disableParsing = options.disableParsing;
}
const cells = [];
cells.length = 0;
for (const key of Object.keys(items[i].json)) {
cells.push({
column: key,
value: items[i].json[key],
});
}
// Collect all the data for the different docs/tables
if (sendData[endpoint] === undefined) {
sendData[endpoint] = {
rows: [],
// TODO: This is not perfect as it ignores if qs changes between
// different items but should be OK for now
qs,
};
}
sendData[endpoint].rows.push({ cells });
if (options.keyColumns) {
// @ts-ignore
sendData[endpoint].keyColumns = options.keyColumns.split(',');
}
}
// Now that all data got collected make all the requests
for (const endpoint of Object.keys(sendData)) {
await GenericFunctions_1.codaApiRequest.call(this, 'POST', endpoint, sendData[endpoint], sendData[endpoint].qs);
}
}
catch (error) {
if (this.continueOnFail()) {
return [this.helpers.returnJsonArray({ error: error.message })];
}
throw error;
}
// Return the incoming data
return [items];
}
// https://coda.io/developers/apis/v1beta1#operation/getRow
if (operation === 'getRow') {
for (let i = 0; i < items.length; i++) {
try {
const docId = this.getNodeParameter('docId', i);
const tableId = this.getNodeParameter('tableId', i);
const rowId = this.getNodeParameter('rowId', i);
const options = this.getNodeParameter('options', i);
const endpoint = `/docs/${docId}/tables/${tableId}/rows/${rowId}`;
if (options.useColumnNames === false) {
qs.useColumnNames = options.useColumnNames;
}
else {
qs.useColumnNames = true;
}
if (options.valueFormat) {
qs.valueFormat = options.valueFormat;
}
responseData = await GenericFunctions_1.codaApiRequest.call(this, 'GET', endpoint, {}, qs);
if (options.rawData === true) {
const executionData = this.helpers.constructExecutionMetaData(this.helpers.returnJsonArray(responseData), { itemData: { item: i } });
returnData.push(...executionData);
}
else {
const executionData = this.helpers.constructExecutionMetaData(this.helpers.returnJsonArray({
id: responseData.id,
...responseData.values,
}), { itemData: { item: i } });
returnData.push(...executionData);
}
}
catch (error) {
if (this.continueOnFail()) {
const executionErrorData = this.helpers.constructExecutionMetaData(this.helpers.returnJsonArray({ error: error.messsage }), { itemData: { item: i } });
returnData.push(...executionErrorData);
continue;
}
throw error;
}
}
return [returnData];
}
// https://coda.io/developers/apis/v1beta1#operation/listRows
if (operation === 'getAllRows') {
let itemsLength = items.length ? 1 : 0;
if (nodeVersion >= 1.1) {
itemsLength = items.length;
}
for (let i = 0; i < itemsLength; i++) {
const docId = this.getNodeParameter('docId', i);
const returnAll = this.getNodeParameter('returnAll', i);
const tableId = this.getNodeParameter('tableId', i);
const options = this.getNodeParameter('options', i);
const endpoint = `/docs/${docId}/tables/${tableId}/rows`;
if (options.useColumnNames === false) {
qs.useColumnNames = options.useColumnNames;
}
else {
qs.useColumnNames = true;
}
if (options.valueFormat) {
qs.valueFormat = options.valueFormat;
}
if (options.sortBy) {
qs.sortBy = options.sortBy;
}
if (options.visibleOnly) {
qs.visibleOnly = options.visibleOnly;
}
if (options.query) {
qs.query = options.query;
}
try {
if (returnAll) {
responseData = await GenericFunctions_1.codaApiRequestAllItems.call(this, 'items', 'GET', endpoint, {}, qs);
}
else {
qs.limit = this.getNodeParameter('limit', i);
responseData = await GenericFunctions_1.codaApiRequest.call(this, 'GET', endpoint, {}, qs);
responseData = responseData.items;
}
if (options.rawData === true) {
for (const item of responseData) {
returnData.push({
json: item,
pairedItem: [{ item: i }],
});
}
}
else {
for (const item of responseData) {
returnData.push({
json: {
id: item.id,
...item.values,
},
pairedItem: [{ item: i }],
});
}
}
}
catch (error) {
if (this.continueOnFail()) {
returnData.push({
json: { error: error.message },
pairedItem: [{ item: i }],
});
continue;
}
throw new n8n_workflow_1.NodeApiError(this.getNode(), error);
}
}
return [returnData];
}
// https://coda.io/developers/apis/v1beta1#operation/deleteRows
if (operation === 'deleteRow') {
try {
const sendData = {};
for (let i = 0; i < items.length; i++) {
const docId = this.getNodeParameter('docId', i);
const tableId = this.getNodeParameter('tableId', i);
const rowId = this.getNodeParameter('rowId', i);
const endpoint = `/docs/${docId}/tables/${tableId}/rows`;
// Collect all the data for the different docs/tables
if (sendData[endpoint] === undefined) {
sendData[endpoint] = [];
}
sendData[endpoint].push(rowId);
}
// Now that all data got collected make all the requests
for (const endpoint of Object.keys(sendData)) {
await GenericFunctions_1.codaApiRequest.call(this, 'DELETE', endpoint, { rowIds: sendData[endpoint] }, qs);
}
}
catch (error) {
if (this.continueOnFail()) {
return [this.helpers.returnJsonArray({ error: error.message })];
}
throw error;
}
// Return the incoming data
return [items];
}
// https://coda.io/developers/apis/v1beta1#operation/pushButton
if (operation === 'pushButton') {
for (let i = 0; i < items.length; i++) {
try {
const docId = this.getNodeParameter('docId', i);
const tableId = this.getNodeParameter('tableId', i);
const rowId = this.getNodeParameter('rowId', i);
const columnId = this.getNodeParameter('columnId', i);
const endpoint = `/docs/${docId}/tables/${tableId}/rows/${rowId}/buttons/${columnId}`;
responseData = await GenericFunctions_1.codaApiRequest.call(this, 'POST', endpoint, {});
returnData.push(responseData);
}
catch (error) {
if (this.continueOnFail()) {
const executionErrorData = this.helpers.constructExecutionMetaData(this.helpers.returnJsonArray({ error: error.messsage }), { itemData: { item: i } });
returnData.push(...executionErrorData);
continue;
}
throw error;
}
}
return [this.helpers.returnJsonArray(returnData)];
}
//https://coda.io/developers/apis/v1beta1#operation/getColumn
if (operation === 'getColumn') {
for (let i = 0; i < items.length; i++) {
try {
const docId = this.getNodeParameter('docId', i);
const tableId = this.getNodeParameter('tableId', i);
const columnId = this.getNodeParameter('columnId', i);
const endpoint = `/docs/${docId}/tables/${tableId}/columns/${columnId}`;
responseData = await GenericFunctions_1.codaApiRequest.call(this, 'GET', endpoint, {});
const executionData = this.helpers.constructExecutionMetaData(this.helpers.returnJsonArray(responseData), { itemData: { item: i } });
returnData.push(...executionData);
}
catch (error) {
if (this.continueOnFail()) {
const executionErrorData = this.helpers.constructExecutionMetaData(this.helpers.returnJsonArray({ error: error.messsage }), { itemData: { item: i } });
returnData.push(...executionErrorData);
continue;
}
throw error;
}
}
return [this.helpers.returnJsonArray(returnData)];
}
//https://coda.io/developers/apis/v1beta1#operation/listColumns
if (operation === 'getAllColumns') {
for (let i = 0; i < items.length; i++) {
try {
const returnAll = this.getNodeParameter('returnAll', 0);
const docId = this.getNodeParameter('docId', i);
const tableId = this.getNodeParameter('tableId', i);
const endpoint = `/docs/${docId}/tables/${tableId}/columns`;
if (returnAll) {
responseData = await GenericFunctions_1.codaApiRequestAllItems.call(this, 'items', 'GET', endpoint, {});
}
else {
qs.limit = this.getNodeParameter('limit', 0);
responseData = await GenericFunctions_1.codaApiRequest.call(this, 'GET', endpoint, {}, qs);
responseData = responseData.items;
}
const executionData = this.helpers.constructExecutionMetaData(this.helpers.returnJsonArray(responseData), { itemData: { item: i } });
returnData.push(...executionData);
}
catch (error) {
if (this.continueOnFail()) {
const executionErrorData = this.helpers.constructExecutionMetaData(this.helpers.returnJsonArray({ error: error.messsage }), { itemData: { item: i } });
returnData.push(...executionErrorData);
continue;
}
throw error;
}
}
return [returnData];
}
}
if (resource === 'formula') {
//https://coda.io/developers/apis/v1beta1#operation/getFormula
if (operation === 'get') {
for (let i = 0; i < items.length; i++) {
try {
const docId = this.getNodeParameter('docId', i);
const formulaId = this.getNodeParameter('formulaId', i);
const endpoint = `/docs/${docId}/formulas/${formulaId}`;
responseData = await GenericFunctions_1.codaApiRequest.call(this, 'GET', endpoint, {});
const executionData = this.helpers.constructExecutionMetaData(this.helpers.returnJsonArray(responseData), { itemData: { item: i } });
returnData.push(...executionData);
}
catch (error) {
if (this.continueOnFail()) {
const executionErrorData = this.helpers.constructExecutionMetaData(this.helpers.returnJsonArray({ error: error.messsage }), { itemData: { item: i } });
returnData.push(...executionErrorData);
continue;
}
throw error;
}
}
return [returnData];
}
//https://coda.io/developers/apis/v1beta1#operation/listFormulas
if (operation === 'getAll') {
for (let i = 0; i < items.length; i++) {
try {
const returnAll = this.getNodeParameter('returnAll', 0);
const docId = this.getNodeParameter('docId', i);
const endpoint = `/docs/${docId}/formulas`;
if (returnAll) {
responseData = await GenericFunctions_1.codaApiRequestAllItems.call(this, 'items', 'GET', endpoint, {});
}
else {
qs.limit = this.getNodeParameter('limit', 0);
responseData = await GenericFunctions_1.codaApiRequest.call(this, 'GET', endpoint, {}, qs);
responseData = responseData.items;
}
const executionData = this.helpers.constructExecutionMetaData(this.helpers.returnJsonArray(responseData), { itemData: { item: i } });
returnData.push(...executionData);
}
catch (error) {
if (this.continueOnFail()) {
const executionErrorData = this.helpers.constructExecutionMetaData(this.helpers.returnJsonArray({ error: error.messsage }), { itemData: { item: i } });
returnData.push(...executionErrorData);
continue;
}
throw error;
}
}
return [returnData];
}
}
if (resource === 'control') {
//https://coda.io/developers/apis/v1beta1#operation/getControl
if (operation === 'get') {
for (let i = 0; i < items.length; i++) {
try {
const docId = this.getNodeParameter('docId', i);
const controlId = this.getNodeParameter('controlId', i);
const endpoint = `/docs/${docId}/controls/${controlId}`;
responseData = await GenericFunctions_1.codaApiRequest.call(this, 'GET', endpoint, {});
const executionData = this.helpers.constructExecutionMetaData(this.helpers.returnJsonArray(responseData), { itemData: { item: i } });
returnData.push(...executionData);
}
catch (error) {
if (this.continueOnFail()) {
const executionErrorData = this.helpers.constructExecutionMetaData(this.helpers.returnJsonArray({ error: error.messsage }), { itemData: { item: i } });
returnData.push(...executionErrorData);
continue;
}
throw error;
}
}
return [returnData];
}
//https://coda.io/developers/apis/v1beta1#operation/listControls
if (operation === 'getAll') {
const returnAll = this.getNodeParameter('returnAll', 0);
qs.limit = this.getNodeParameter('limit', 0);
for (let i = 0; i < items.length; i++) {
try {
const docId = this.getNodeParameter('docId', i);
const endpoint = `/docs/${docId}/controls`;
if (returnAll) {
responseData = await GenericFunctions_1.codaApiRequestAllItems.call(this, 'items', 'GET', endpoint, {});
}
else {
responseData = await GenericFunctions_1.codaApiRequest.call(this, 'GET', endpoint, {}, qs);
responseData = responseData.items;
}
const executionData = this.helpers.constructExecutionMetaData(this.helpers.returnJsonArray(responseData), { itemData: { item: i } });
returnData.push(...executionData);
}
catch (error) {
if (this.continueOnFail()) {
const executionErrorData = this.helpers.constructExecutionMetaData(this.helpers.returnJsonArray({ error: error.messsage }), { itemData: { item: i } });
returnData.push(...executionErrorData);
continue;
}
throw error;
}
}
return [returnData];
}
}
if (resource === 'view') {
//https://coda.io/developers/apis/v1beta1#operation/getView
if (operation === 'get') {
for (let i = 0; i < items.length; i++) {
const docId = this.getNodeParameter('docId', i);
const viewId = this.getNodeParameter('viewId', i);
const endpoint = `/docs/${docId}/tables/${viewId}`;
responseData = await GenericFunctions_1.codaApiRequest.call(this, 'GET', endpoint, {});
const executionData = this.helpers.constructExecutionMetaData(this.helpers.returnJsonArray(responseData), { itemData: { item: i } });
returnData.push(...executionData);
}
return [returnData];
}
//https://coda.io/developers/apis/v1beta1#operation/listViews
if (operation === 'getAll') {
const returnAll = this.getNodeParameter('returnAll', 0);
qs.limit = this.getNodeParameter('limit', 0);
for (let i = 0; i < items.length; i++) {
try {
const docId = this.getNodeParameter('docId', i);
const endpoint = `/docs/${docId}/tables?tableTypes=view`;
if (returnAll) {
responseData = await GenericFunctions_1.codaApiRequestAllItems.call(this, 'items', 'GET', endpoint, {});
}
else {
responseData = await GenericFunctions_1.codaApiRequest.call(this, 'GET', endpoint, {}, qs);
responseData = responseData.items;
}
responseData = this.helpers.constructExecutionMetaData(this.helpers.returnJsonArray(responseData), { itemData: { item: i } });
returnData.push(...responseData);
}
catch (error) {
if (this.continueOnFail()) {
const executionErrorData = this.helpers.constructExecutionMetaData(this.helpers.returnJsonArray({ error: error.messsage }), { itemData: { item: i } });
returnData.push(...executionErrorData);
continue;
}
throw error;
}
}
return [returnData];
}
if (operation === 'getAllViewRows') {
let itemsLength = items.length ? 1 : 0;
if (nodeVersion >= 1.1) {
itemsLength = items.length;
}
for (let i = 0; i < itemsLength; i++) {
const docId = this.getNodeParameter('docId', i);
const returnAll = this.getNodeParameter('returnAll', i);
const viewId = this.getNodeParameter('viewId', i);
const options = this.getNodeParameter('options', i);
const endpoint = `/docs/${docId}/tables/${viewId}/rows`;
if (options.useColumnNames === false) {
qs.useColumnNames = options.useColumnNames;
}
else {
qs.useColumnNames = true;
}
if (options.valueFormat) {
qs.valueFormat = options.valueFormat;
}
if (options.sortBy) {
qs.sortBy = options.sortBy;
}
if (options.query) {
qs.query = options.query;
}
try {
if (returnAll) {
responseData = await GenericFunctions_1.codaApiRequestAllItems.call(this, 'items', 'GET', endpoint, {}, qs);
}
else {
qs.limit = this.getNodeParameter('limit', i);
responseData = await GenericFunctions_1.codaApiRequest.call(this, 'GET', endpoint, {}, qs);
responseData = responseData.items;
}
if (options.rawData === true) {
for (const item of responseData) {
returnData.push({
json: item,
pairedItem: [{ item: i }],
});
}
}
else {
for (const item of responseData) {
returnData.push({
json: {
id: item.id,
...item.values,
},
pairedItem: [{ item: i }],
});
}
}
}
catch (error) {
if (this.continueOnFail()) {
returnData.push({
json: { error: error.message },
pairedItem: [{ item: i }],
});
continue;
}
throw new n8n_workflow_1.NodeApiError(this.getNode(), error);
}
}
return [returnData];
}
//https://coda.io/developers/apis/v1beta1#operation/deleteViewRow
if (operation === 'deleteViewRow') {
for (let i = 0; i < items.length; i++) {
try {
const docId = this.getNodeParameter('docId', i);
const viewId = this.getNodeParameter('viewId', i);
const rowId = this.getNodeParameter('rowId', i);
const endpoint = `/docs/${docId}/tables/${viewId}/rows/${rowId}`;
responseData = await GenericFunctions_1.codaApiRequest.call(this, 'DELETE', endpoint);
const executionData = this.helpers.constructExecutionMetaData(this.helpers.returnJsonArray(responseData), { itemData: { item: i } });
returnData.push(...executionData);
}
catch (error) {
if (this.continueOnFail()) {
const executionErrorData = this.helpers.constructExecutionMetaData(this.helpers.returnJsonArray({ error: error.messsage }), { itemData: { item: i } });
returnData.push(...executionErrorData);
continue;
}
throw error;
}
}
return [returnData];
}
//https://coda.io/developers/apis/v1beta1#operation/pushViewButton
if (operation === 'pushViewButton') {
for (let i = 0; i < items.length; i++) {
try {
const docId = this.getNodeParameter('docId', i);
const viewId = this.getNodeParameter('viewId', i);
const rowId = this.getNodeParameter('rowId', i);
const columnId = this.getNodeParameter('columnId', i);
const endpoint = `/docs/${docId}/tables/${viewId}/rows/${rowId}/buttons/${columnId}`;
responseData = await GenericFunctions_1.codaApiRequest.call(this, 'POST', endpoint);
const executionData = this.helpers.constructExecutionMetaData(this.helpers.returnJsonArray(responseData), { itemData: { item: i } });
returnData.push(...executionData);
}
catch (error) {
if (this.continueOnFail()) {
const executionErrorData = this.helpers.constructExecutionMetaData(this.helpers.returnJsonArray({ error: error.messsage }), { itemData: { item: i } });
returnData.push(...executionErrorData);
continue;
}
throw error;
}
}
return [returnData];
}
if (operation === 'getAllViewColumns') {
const returnAll = this.getNodeParameter('returnAll', 0);
qs.limit = this.getNodeParameter('limit', 0);
for (let i = 0; i < items.length; i++) {
try {
const docId = this.getNodeParameter('docId', i);
const viewId = this.getNodeParameter('viewId', i);
const endpoint = `/docs/${docId}/tables/${viewId}/columns`;
if (returnAll) {
responseData = await GenericFunctions_1.codaApiRequestAllItems.call(this, 'items', 'GET', endpoint, {});
}
else {
responseData = await GenericFunctions_1.codaApiRequest.call(this, 'GET', endpoint, {}, qs);
responseData = responseData.items;
}
const executionData = this.helpers.constructExecutionMetaData(this.helpers.returnJsonArray(responseData), { itemData: { item: i } });
returnData.push(...executionData);
}
catch (error) {
if (this.continueOnFail()) {
const executionErrorData = this.helpers.constructExecutionMetaData(this.helpers.returnJsonArray({ error: error.messsage }), { itemData: { item: i } });
returnData.push(...executionErrorData);
continue;
}
throw error;
}
}
return [returnData];
}
//https://coda.io/developers/apis/v1beta1#operation/updateViewRow
if (operation === 'updateViewRow') {
for (let i = 0; i < items.length; i++) {
try {
qs = {};
const docId = this.getNodeParameter('docId', i);
const viewId = this.getNodeParameter('viewId', i);
const rowId = this.getNodeParameter('rowId', i);
const keyName = this.getNodeParameter('keyName', i);
const options = this.getNodeParameter('options', i);
const body = {};
const endpoint = `/docs/${docId}/tables/${viewId}/rows/${rowId}`;
if (options.disableParsing) {
qs.disableParsing = options.disableParsing;
}
const cells = [];
cells.length = 0;
//@ts-ignore
for (const key of Object.keys(items[i].json[keyName])) {
cells.push({
column: key,
//@ts-ignore
value: items[i].json[keyName][key],
});
}
body.row = {
cells,
};
await GenericFunctions_1.codaApiRequest.call(this, 'PUT', endpoint, body, qs);
}
catch (error) {
if (this.continueOnFail()) {
items[i].json = { error: error.message };
continue;
}
throw error;
}
}
return [items];
}
}
return [];
}
}
exports.Coda = Coda;
//# sourceMappingURL=Coda.node.js.map