我目前有一個腳本,可以在編輯單元格時將資料推送到 webhook(到 Integromat)。
最終目標是獲得一個帶有鍵值對的 JSON,但到目前為止,我只設法獲取了我的值。但是我無法正確地重新使用 Integromat 中的那些。因此,我還需要將鍵(第 1 行中的列標題)映射到它。但我被卡住了:')
這是我當前的代碼:
function onEdit(e){
const endColumn = 20; //<--- number of columns
const sheet = SpreadsheetApp.getActiveSheet();
var range = e.range;
var row = range.rowStart;
var range = sheet.getRange(row, 1, 1, endColumn);
var values = range.getValues()[0];
Logger.log(values)
var formData = {
'CELL_UPDATED': range.getA1Notation(),
'NEW_VALUE': range.getValue(),
'SHEET': sheet.getName(),
'CONTENT': JSON.stringify(values)
};
//console.log(formData);
var options = {
'method' : 'post',
'payload' : formData
};
UrlFetchApp.fetch('webhookurl', options);
}
將列標題添加到我的 JSON 輸出中最有效的選擇是什么?
uj5u.com熱心網友回復:
嘗試這個:
function onEdit(e) {
const endColumn = 20;
const sh = e.range.getSheet();
let formData = { 'CELL_UPDATED': e.range.getA1Notation(), 'NEW_VALUE': e.value, 'SHEET': sh.getName(), "CONTENT": [] };
const hA = sh.getRange(1, 1, 1, 20).getDisplayValues().flat();
const vs = sh.getRange(e.range.rowStart, 1, 1, 20).getValues().flat();
hA.forEach((h, i) => { formData.CONTENT.push({h:vs[i]})});
var options = {
'method': 'post',
'payload': JSON.stringify(formData);
};
UrlFetchApp.fetch('webhookurl', options);
}
uj5u.com熱心網友回復:
您必須將標題動態添加為每個值的鍵。
您可以為此使用映射和計算屬性名稱:
function onEdit(e) {
const endColumn = 20;
const range = e.range;
const sheet = range.getSheet();
const row = range.rowStart;
const headers = sheet.getRange(1, 1, 1, endColumn).getValues()[0];
const values = sheet.getRange(row, 1, 1, endColumn).getValues()[0];
const content = values.map((value,i) => {
return { [headers[i]]: value }
});
let formData = {
'CELL_UPDATED': range.getA1Notation(),
'NEW_VALUE': e.value,
'SHEET': sheet.getName(),
'CONTENT': content
};
var options = {
'method': 'post',
'payload': JSON.stringify(formData)
};
UrlFetchApp.fetch('webhookurl', options);
}
筆記:
如果您只是將變數名稱添加為鍵,它不會將其解釋為變數。例如,在 中{ myKey: myValue },鍵將對應于字串"myKey",而不是之前存盤到變數中的任何值myKey。
有關的:
- JavaScript 通過變數設定物件鍵
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/336712.html
