Google 表格是否可以检测您何时使用 onChange 编辑笔记或插入新笔记?
function onChange(e) {
var ss = SpreadsheetApp.getActiveSheet();
var s = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("Current");
var r = ss.getActiveCell();
if(e.changeType == 'OTHER') {
if ((r.getColumn() < 7 || r.getColumn() > 7) && (ss.getName()=="Completed") && (r.getRow() > 1)) { // 2. If Edit is done in any column before or after 6th Column (F) And sheet name is Sheet1 then:
var celladdress ='G'+ r.getRowIndex() // Add time stamp to cell in Column F
ss.getRange(celladdress).setValue(Utilities.formatDate(new Date(), "GMT-08:00", "MM/dd/yyyy HH:mm"));
ss.getRange(r.getRow(), 17).setValue(s.getRange(row, 2).getNote());
}
}
我尝试了changeType FORMAT、EDIT和其他,但它们都不起作用。如果 onChange 无法检测笔记编辑,是否有函数可以做到这一点?
解释/问题:
我花了一个小时才弄清楚这一点,但实际上你的逻辑是正确的。
- 编辑/插入注释时
e.changeType
回报OTHER
,因此这部分代码是正确的。
我测试了您的代码,并且还尝试通过多种不同的方式获取活动单元格:getActiveCell()
, getCurrentCell()
and getActiveRange()
由于事件对象onChange
触发器不支持e.range
.
Since r.getRow()
is 1
你的代码没有做任何事情,因为你有r.getRow() > 1
作为一个始终评估为的条件false
因为这个错误。
作为此错误的证明,您可以使用此代码,当您在工作表中插入或修改注释时,您会看到Completed
,时间戳将被粘贴到单元格中G1
同一张纸的。
function onChange(e) {
var ss = SpreadsheetApp.getActiveSheet();
var s = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("Current");
if(e.changeType == 'OTHER') {
if (ss.getName()=="Completed") {
var celladdress ='G1';
ss.getRange(celladdress).setValue(Utilities.formatDate(new Date(), "GMT-08:00", "MM/dd/yyyy HH:mm"));
}
}
}
虽然这个答案没有回答您的问题,但它证明您的逻辑是正确的,但由于错误,您没有得到预期的结果。因此,我认为了解这个问题对您和其他未来的读者会很有用。不幸的是,我没有想出解决方案,但我希望其他读者能想到。
对于上述所有内容,我假设您已经安装了onChange触发器,因为它是可安装的触发器。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)