n8n-nodes-feishu-lite
Version:
96 lines • 3.48 kB
JavaScript
;
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
const n8n_workflow_1 = require("n8n-workflow");
const RequestUtils_1 = __importDefault(require("../../../help/utils/RequestUtils"));
const NodeUtils_1 = __importDefault(require("../../../help/utils/NodeUtils"));
const SpreadsheetValuesWriteOperate = {
name: '自动写入数据',
value: 'spreadsheet:valuesAutoWrite',
order: 70,
options: [
{
displayName: '电子表格 Token',
name: 'spreadsheetToke',
type: 'string',
required: true,
default: '',
description: '电子表格的 token。',
},
{
displayName: '工作表 ID',
name: 'sheetId',
type: 'string',
required: true,
default: "",
},
{
displayName: '数据',
name: 'values',
type: 'json',
required: true,
default: '[]',
description: '一个对象一条数据,key值是表头名称',
},
{
displayName: '开始行数',
name: 'startLine',
type: 'number',
required: true,
default: 1,
},
{
displayName: '是否显示表头',
name: 'showHeader',
type: 'boolean',
required: true,
default: true,
},
],
async call(index) {
const spreadsheetToken = this.getNodeParameter('spreadsheetToke', index);
const sheetId = this.getNodeParameter('sheetId', index);
const startLine = this.getNodeParameter('startLine', index);
const showHeader = this.getNodeParameter('showHeader', index);
const values = NodeUtils_1.default.getNodeJsonData(this, 'values', index);
if (!Array.isArray(values) || values.length === 0) {
throw new n8n_workflow_1.NodeOperationError(this.getNode(), '数据不能为空');
}
function getColumnHeader(index) {
let column = '';
index++;
while (index > 0) {
const remainder = (index - 1) % 26;
column = String.fromCharCode(65 + remainder) + column;
index = Math.floor((index - 1) / 26);
}
return column;
}
const headers = Object.keys(values[0]);
const maxColumnHeader = getColumnHeader(headers.length);
const range = `${sheetId}!A${startLine}:${maxColumnHeader}${startLine + values.length}`;
let valuesWithHeader = [];
if (showHeader) {
valuesWithHeader = [headers, ...values.map((item) => headers.map((header) => item[header]))];
}
else {
valuesWithHeader = values.map((item) => Object.values(item));
}
const body = {
valueRange: {
range,
valuesWithHeader,
},
};
const response = await RequestUtils_1.default.request.call(this, {
method: 'PUT',
url: `/open-apis/sheets/v2/spreadsheets/${spreadsheetToken}/values`,
body,
});
return response;
},
};
exports.default = SpreadsheetValuesWriteOperate;
//# sourceMappingURL=SpreadsheetValuesAutoWriteOperate.js.map