簡體   English   中英

Google 表格應用程序腳本 - 將 function 轉換為特定單元格的 onEdit

[英]Google Sheets App Script - Convert a function to an onEdit of a specific cell

我有一個 function 在一系列單元格中設置一個公式,然后將該公式復制下來。 這似乎工作正常。

我想將其轉換為在當前選項卡上編輯單元格 D11 時運行的 onEdit function。

到目前為止,我還沒有多少運氣。

function copyDownAll() {
  let ss = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet();
  ss.getRange("A12:C12").setFormula("=Master!A7");
  let noRows = ss.getMaxRows();
 
  let fillDownRange = ss.getRange(12,1,noRows+1,4);
  ss.getRange("A12:C12").copyTo(fillDownRange);
  
  let fillDownRange2 = ss.getRange(11,4,noRows+1,1);
  ss.getRange("D11").copyTo(fillDownRange2);
}

經過更多搜索后,我發現以下解決方案似乎有效

function onEdit(e) {
  if(e.range.getA1Notation() =='D11'){

  let ss = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet();
  ss.getRange("A12:C12").setFormula("=Master!A7");
  let noRows = ss.getMaxRows();
 
  let fillDownRange = ss.getRange(12,1,noRows+1,4);
  ss.getRange("A12:C12").copyTo(fillDownRange);
  
  let fillDownRange2 = ss.getRange(11,4,noRows+1,1);
  ss.getRange("D11").copyTo(fillDownRange2);
  };
};

參考:

您的評論表明您面臨行錯位的風險。

為避免未來可能出現的麻煩,您可能需要探索將所有數據放在主表中,並讓每個人都在那里進行編輯。

使用過濾視圖讓多個同時用戶編輯工作表而不會互相干擾。 在凍結部分插入鏈接以在過濾器視圖之間輕松切換 - 請參閱過濾器視圖示例電子表格。

為了回答您最初的問題,這類事情通常在 Google 表格中使用arrayformula(){ array expression }完成。 在單元格A12中試試這個:

={ Master:A7:C }

此表達式將使用Master中的值填充A:C列。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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