簡體   English   中英

讓谷歌表格根據第二列中的值從提交中排序

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM