如何使用特定范围的ONEDIT触发器构建脚本,并使用时间戳在单元格中插入注释



我是编码的初学者,因此任何建议或指导都将完全有用。我正在使用一个用于特定范围/列的oneDit((的脚本。

一旦我假设使用IF语句的OneDit((触发器,将似乎插入了一个自定义的对话框提示。输入注释后,它将标记您选择的数据验证,并用时间戳将其插入单元格上。

这是我为这个问题做的示例表:https://docs.google.com/spreadsheets/d/12-b4puk5xkqllokvpxd-uz__rajmiegxhph5k9gvu4/edit?usp = sharing

请随时提出问题!

 
  
  function onEdit() {
    var ss = SpreadsheetApp.getActiveSheet().getActiveRange();
    var select = ss.getDisplayValue();
       if (select = 'Phone'){
    var ui = SpreadsheetApp.getUi(); 
    var name = Session.getActiveUser();        
    var cell = ss.getDisplayValue()
    var timestamp = Utilities.formatDate(new Date(), "EST", "MMM dd");
    var pnote = ss.getNote()
    Logger.log(timestamp);
    var result = ui.prompt(
      'Would you like to add a short note?',
      '',
      ui.ButtonSet.OK_CANCEL);
    
    // Process the user's response.
    var button = result.getSelectedButton();
    var text = result.getResponseText();
    var notes = [
      [pnote],
      [timestamp +": "+name + ": "+cell +": "+text+'.']
    ];
    if (button == ui.Button.OK) {
      // User clicked "OK".
      ss.setNote(notes);
    } else if (button == ui.Button.CANCEL) {
      // User clicked "Cancel".
      ui.alert('You did not set a note.');
    } else if (button == ui.Button.CLOSE) {
      // User clicked X in the title bar.
      ui.alert('You closed the dialog.');
    }
         
    }     else {
        Logger.log("Cell was out of range");
    }
  }
//Attempt 2 (no luck) would replace the first portion of script up to if statement.
//    var ss = SpreadsheetApp.getActiveSheet().getActiveRange();
//    var column = ss.getColumn();
//    var actionColumn = [3]
//    
//    if (actionColumn.indexOf(column) = 3){

我的问题是,只有在特定列中选择数据验证时才能触发此脚本。也许下一个工作可能是有多个IF语句来自定义对话问题&笔记。

预先感谢您!

您必须在OneDit内部有一个if-dif条件,以检查行的数量,列。

例如,您只希望ONEDIT触发单元格(5,6(,您可以做:

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..
    }
}

只需修改其他单元,列等的代码

您可以使用Onedit触发器的e参数。在此处阅读有关事件对象的信息

e参数添加到功能中,然后使用if语句检查是否在指定表的指定列上进行编辑。

在此示例中,如果在B列上进行编辑,则if为true,Col B是Sheet1的索引2

function onEdit(e){
  if(e.source.getSheetName() == "Sheet1" && e.range.getColumn() == 2){

最新更新