【发布时间】:2020-05-11 04:52:04
【问题描述】:
下面是一个脚本,它允许我将五个不同的 onEdit 函数组合成一个函数。
function onEdit(e){
if (e.range.getA1Notation() != "H12" || e.value != "submitResponse") return;
var sh = SpreadsheetApp.getActiveSpreadsheet();
var ss = sh.getActiveSheet();
var m = sh.getSheetByName("Master");
ss.getRange(2,1,ss.getLastRow(),3).copyTo(m.getRange(m.getLastRow()+1,1,ss.getLastRow(),3));
ss.getRange('H12').clearContent();
e.range.clearContents();
}
我现在希望使这个脚本更加灵活。请参阅我的电子表格的 Sheet1:https://docs.google.com/spreadsheets/d/1EoOIQxWyKWOvtlCrmJNI76FAxGhzgXrE4s0F05tw2MY/edit#gid=0
如果我可以使用 H:H 的整个列来提交每个相应的行,而不是将自己限制在 H12 中,那就太好了。因此,当我将 H2 更改为 submitResponse 时,它会将 A2:G2 复制/粘贴到 Master 的最后一行。当我将 H3 更改为 submitResponse 时,它会将 A3:G3 复制/粘贴到 Master 的最后一行。以此类推。
我试过了,但没有成功。我想我错过了什么。
function onEdit(e) {
var ss = e.source;
var s = ss.getActiveSheet();
var r = e.range;
var actionCol = 8;
var rowIndex = r.getRowIndex();
var colIndex = r.getColumnIndex();
var colNumber = s.getLastColumn()-1;
if (e.value == "submitResponse" && colIndex == actionCol) ;
var sourceRange = s.getRange(rowIndex, 1, 1, colNumber);
var targetRange = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("Master").getRange(getLastRow()+1, 1, 1, colNumber);
sourceRange.copyTo(targetRange,SpreadsheetApp.CopyPasteType.PASTE_VALUES, false);
}
【问题讨论】:
标签: google-apps-script google-sheets