Google apps script 如何使用onEdit触发器为特定范围构建脚本,在单元格中插入注释,并带有时间戳?

Google apps script 如何使用onEdit触发器为特定范围构建脚本,在单元格中插入注释,并带有时间戳?,google-apps-script,google-sheets-api,Google Apps Script,Google Sheets Api,我是一名编程新手,所以任何建议或指导都会非常有用。我正在编写一个脚本,该脚本将OneEdit用于特定的范围/列 一旦onEdit触发了if语句,就会出现一个定制的对话框提示来插入注释。键入注释后,它将标记所选的数据验证,并将其作为带有时间戳的注释插入单元格中 这是我为这个问题制作的样本表: 请随时提问 函数onEdit{ var ss=电子表格app.getActiveSheet.getActiveRange; var select=ss.getDisplayValue; 如果选择='电话'

我是一名编程新手,所以任何建议或指导都会非常有用。我正在编写一个脚本,该脚本将OneEdit用于特定的范围/列

一旦onEdit触发了if语句,就会出现一个定制的对话框提示来插入注释。键入注释后,它将标记所选的数据验证,并将其作为带有时间戳的注释插入单元格中

这是我为这个问题制作的样本表:

请随时提问

函数onEdit{ var ss=电子表格app.getActiveSheet.getActiveRange; var select=ss.getDisplayValue; 如果选择='电话'{ var ui=电子表格app.getUi; var name=Session.getActiveUser; var cell=ss.getDisplayValue var timestamp=Utilities.formatDatenew日期,EST,MMM dd; var pnote=ss.getNote Logger.logtimestamp; var result=ui.prompt “是否要添加一个简短的注释?”, , ui.ButtonSet.OK\u取消; //处理用户的响应。 var button=result.getSelectedButton; var text=result.getResponseText; 变量注释=[ [注], [时间戳+:+名称+:+单元格+:+文本+'.] ]; 如果按钮==ui.button.OK{ //用户单击确定。 ss.setNotenotes; }如果按钮==ui.button.CANCEL,则为else{ //用户单击了“取消”。 ui.alert“您没有设置注释”; }如果按钮==ui.button.CLOSE,则为else{ //用户单击了标题栏中的X。 ui.alert“您关闭了对话框”; } }否则{ Logger.logCell超出范围; } } //尝试2没有运气将替换脚本的第一部分直至if语句。 //var ss=电子表格app.getActiveSheet.getActiveRange; //var column=ss.getColumn; //var actionColumn=[3] // //如果actionColumn.indexOfcolumn=3{您可以使用onEdit触发器的e参数

将e参数添加到函数中,然后使用if语句检查编辑是否发生在指定工作表的指定列上

在本例中,如果编辑发生在列B上,则if为true,列B为Sheet1的索引2


在onEdit中必须有一个if条件来检查行数、列数

例如,您只希望在单元格F5 5,6上触发OneEdit,可以执行以下操作:

function onEdit(e){
    var range = e.range;
    if(range.getRow() == 5 && range.getColumn() == 6){
        range.setNote('ROW: ' + range.getRow() + " COLUMN: "+ range.getColumn());

      //additional code . . . Do what you want..
    }
}

只需修改其他单元格、列等的代码即可。

TypeError:无法从未定义中读取属性源。第2行,文件代码消除我的错误。设置触发器后,我使其正常工作。感谢您的帮助!
function onEdit(e){
    var range = e.range;
    if(range.getRow() == 5 && range.getColumn() == 6){
        range.setNote('ROW: ' + range.getRow() + " COLUMN: "+ range.getColumn());

      //additional code . . . Do what you want..
    }
}