gpt4 book ai didi

javascript - 如果快速输入值,Google 电子表格脚本将无法运行

转载 作者:行者123 更新时间:2023-11-29 20:59:59 25 4
gpt4 key购买 nike

我为我的 Google 电子表格编写了以下脚本:

function onEdit(e) 
{
var doc = SpreadsheetApp.getActiveSpreadsheet();
var sheet = doc.getActiveSheet();
var cell = sheet.getActiveCell();
var column = sheet.getActiveCell().getColumn();
var row = sheet.getActiveCell().getRow();
var dat = sheet.getActiveCell().getValue()+"";
var curDate = Utilities.formatDate(new Date(), "GMT+5:30", "dd/MM/yyyy")
var editor = doc.getViewers();
var temp = e.oldValue;
if(dat=="")
{
dat = "0.0"
}
if((column == 4 || column == 5) && temp != null)
{
cell.setComment("Value changed from ₹"+ (temp) + " to ₹" + dat + " on " + curDate);
}

}

当 D 列或 E 列中的值发生更改时,我使用此代码插入注释。一个月以来我一直在使用此脚本并且代码运行良好。但我最近注意到一个问题。

  1. 如果我在多个单元格中快速输入值,例如 D2、D3、D4、D5、D6 等,则不会对所有单元格执行代码,并且只会向某些随机单元格添加注释。只有当我在输入记录之间保持 1 秒的最小间隔时,它才会按预期执行。
  2. 如果我一次从多个单元格中删除值,则不会对任何单元格执行代码。

感谢阅读代码。

最佳答案

关于第一个问题,我能够使用以下脚本重现该问题:

function onEdit(e){
var destination = e.range.offset(0,1);
if(e.value){ // Do this when editing a range having only one cell
destination.setValue(e.value);
} else { // Do this when editing a range having multiple cells
destination.setValues(e.range.getValues());
}
}

这应该使用 Issue Tracker 报告给 Google .

关于第二个问题,getActiveCell 只返回事件单元格,看起来需要整个范围。值得注意的是,当编辑包含多个单元格的范围时,e.oldValue 返回 null。

以下是您的脚本的替代版本,它既适用于单个单元格编辑,也适用于同时编辑多个单元格:

function onEdit(e){
var column = e.range.getColumn();
if(column == 4 || column == 5){
if(e.range.getNumRows() == 1 && e.oldValue != undefined){
e.range.setNote("Old value: " + ((e.oldValue)?e.oldValue:"0.0") + "| New value: " + ((e.value)?e.value:"0.0"));
}
if(e.range.getNumRows() > 1){
var values = e.range.getValues();
for(var i = 1;i<=e.range.getNumRows();i++){
e.range.getCell(i,1).setNote("Old value: Not available | New value: " + ((values[i-1][0])?(values[i-1][0]):"0.0"));
}
}
}
}

注意:setComment 未包含在电子表格服务的官方 Google Apps 脚本引用中。

相关问题

关于javascript - 如果快速输入值,Google 电子表格脚本将无法运行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47060494/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com