[英]Have google sheet sort on from submit based on value in second column
我有一個腳本,可以根據單元格將行移動到同名的工作表中。
我試圖讓它在onFormSubmit
上工作,但我沒有運氣。
OnEdit 腳本完美運行,但在提交表單后沒有任何反應。
function onFormSubmit(e) {
let range = e.range;
let col = range.getColumn();
let row = range.getRow();
let val = range.getValue();
let source = e.source.getActiveSheet();
if (col == 2 && val != '') {
let ss = SpreadsheetApp.getActiveSpreadsheet();
let sheet = ss.getSheetByName(source.getName());
let targetSheet = ss.getSheetByName(val);
let data = sheet.getRange(row, 1, 1, sheet.getLastColumn()).getValues();
targetSheet.appendRow(data[0]);
sheet.deleteRow(row);
}
}
首先,您從 onEdit 事件中獲得的 object “e”與您從 onFormSubmit 事件中獲得的不同,它們的字段不同,您訪問它們的值的方式也不同。
適用於您的代碼的主要區別在於您訪問 object e 的輸入值的方式,對於onEdit觸發器,您可以使用e.value function(編輯 1 個單元格時)和e.values訪問輸入值(當編輯單元格范圍時),而對於onFormSubmit ,您只能使用e.values (值數組)訪問輸入值。
您可以在此處查看所有差異: App Script Documentation
請試試這段代碼:
function onMyFormSubmit(e) {
const values = e.values;
if (values[1] != '') {
const ss = SpreadsheetApp.getActiveSpreadsheet();
const targetSheet = ss.getSheetByName(values[1]);
targetSheet.getRange(targetSheet.getLastRow()+1 ,1,1,values.length).setValues([values]);
const sheet = e.range.getSheet();
sheet.deleteRow(e.range.rowStart);
}
}
附言。 我通過單擊左窗格中的“時鍾”圖標來測試我的代碼設置觸發器。 觸發器設置
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.