Javascript 如果快速输入值,则Google电子表格脚本不起作用
我已经为我的谷歌电子表格编写了以下脚本:Javascript 如果快速输入值,则Google电子表格脚本不起作用,javascript,google-apps-script,google-sheets,spreadsheet,Javascript,Google Apps Script,Google Sheets,Spreadsheet,我已经为我的谷歌电子表格编写了以下脚本: function onEdit(e) { var doc = SpreadsheetApp.getActiveSpreadsheet(); var sheet = doc.getActiveSheet(); var cell = sheet.getActiveCell(); var column = sheet.getActiveCell().getColumn(); var row = sheet.getActiveCell().
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列中的值发生更改时,我使用此代码插入注释。我从一个月开始使用此脚本,代码工作正常。但我最近注意到了一个问题
感谢您阅读代码 我从《气体指南》上了解到,触发器可能对您有所帮助 使用以下方法向编辑范围添加注释:
function onEdit(e){
// Set a comment on the edited cell to indicate when it was changed.
var range = e.range;
range.setNote('Last modified: ' + new Date());
}
关于第一个问题,我能够使用以下脚本重现该问题:
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());
}
}
这应该通过使用向谷歌报告
关于第二个问题,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"));
}
}
}
}
函数onEdit(e){
var column=e.range.getColumn();
如果(列==4 | |列==5){
if(e.range.getNumRows()==1&&e.oldValue!=未定义){
e、 range.setNote(“旧值:+((e.oldValue)→e.oldValue:“0.0”)+”;新值:+((e.value)→e.value:“0.0”);
}
如果(e.range.getNumRows()>1){
var values=e.range.getValues();
对于(var i=1;iLooks),您可能会在脚本运行时遇到问题,或者编辑并不总是执行单个单元格(您可以编辑一个范围)。当编辑的部分是一组单元格而不是单个单元格时,请尝试使用Chemiadel的答案找到正确激活事件的方法。检查此项以查看事件实际带来的内容,这样您就不必重复工作。