【发布时间】:2019-10-28 14:13:56
【问题描述】:
Google 表格脚本编辑器中的 onEdit(e) 函数仅捕获对单个单元格的编辑。有没有办法让它捕获对多个单元格的编辑,例如,如果我将信息复制到 20 个单元格中,onEdit(e) 是否可以识别出 20 个单元格已被编辑而不仅仅是第一个单元格?
我到处寻找解决方案,但找不到任何人提出这个问题的例子。
function recordChange(c){
var range = c.range;
var column = 8; //Column for change log
var row = range.getRow();
var ss = SpreadsheetApp.getActiveSpreadsheet();
var sheet = ss.getSheets()[0];
var oldRow = range.getRow();
var oldColumn = range.getColumn();
sheet.getRange(oldRow, oldColumn).setBackground("orange");
var changeCell = sheet.getRange(row, column)
changeCell.setValue(new Date())
var testCell = sheet.getRange(2, 2)
var test = range.getValues();
var newT = test.map(function(x){ return x});
testCell.setValue(newT)
}
function recordAction(c){
var range = c.range;
var ss = SpreadsheetApp.getActiveSpreadsheet();
var sheet = ss.getSheets()[0];
var row = range.getRow();
for (var i = 1; i<9; i++){
sheet.getRange(row, i).setBackground(null);
}
}
//Main Function
function onEdit(e){
var range = e.range;
if (range.getRow() != 1){
if (range.getColumn() != 9 && range.getColumn() != 8) {recordChange(e);} else {recordAction(e);}
}
}
编辑单元格应在单独的列中添加日期并以橙色突出显示单元格。这行得通,但是当我尝试编辑多个单元格时,它只会注册第一个单元格,因此作为在工作表上记录编辑的一种方式非常无用。
我假设有一种方法可以捕获数组中的多个编辑,但是我找不到任何明显的方法。
【问题讨论】:
-
on edit 功能有点慢。您是通过复制和粘贴多单元格更改还是从下拉菜单中说话?根据我的经验,每次编辑更改后都有 0.5 秒的时间缓冲。
-
您好,请问您的问题解决了吗?请记住,如果您想将您的问题标记为已解决,您应该接受为您的问题提供解决方案的任何答案。如果情况并非如此,并且您的问题没有解决,请考虑解释为什么不是这样,以便该社区可以为您提供帮助。
标签: google-apps-script google-sheets