【问题标题】:How do I automatically set a Google Sheets cell to the current date on editing its row?如何在编辑其行时自动将 Google 表格单元格设置为当前日期?
【发布时间】:2014-04-12 06:40:50
【问题描述】:

我有一个 Google 电子表格,我想在编辑尚未设置日期的行时自动设置“日期”单元格的值。据我所知 Google Sheets API 以及 GoogleScript 的工作原理,我认为这应该可以工作,但它甚至从未设置调试单元! 我在这里做错了什么?

/**
 * Automatically puts the current date in the first column of the edited row
 */
function onEdit(event){
  var sheet = event.source.getActiveSheet();
  var debugCell = sheet.getCell(10,10);
  debugCell.setValue("DEBUG CELL"); // if anything works, this should show up... but it doesn't :C

  var editedCell = sheet.getActiveCell();
  var dateCol = 0;
  var dateCell = sheet.getCell(editedCell.getRow(), dateCol);

  debugCell.setValue(editedCell.getColumn());

  if(!dateCell.getValue() && editedCell.getColumn() != dateCol){   
    dateCell.setValue(new Date());
  }
}

【问题讨论】:

    标签: javascript google-sheets spreadsheet


    【解决方案1】:

    我想你没有设置触发器。在脚本编辑器中,转到 Resources -> 当前项目的触发器 选择您的函数名称(在本例中为 onEdit)并将 Event 设置为 From Spreadsheet -> onEdit

    保存就完成了。

    修改后的解决方案

    好的,您的代码也有问题。我之前错过了。

    getCellrange 类的函数,而不是 sheet 类的函数。您应该改用getRange。这是一个应该可以工作的代码。您可以根据自己的要求对其进行编辑。

    function onEdit(event){
      var sheet = event.source.getActiveSheet();
      var debugCell = sheet.getRange(10,10);
      debugCell.setValue("DEBUG CELL"); // if anything works, this should show up... but it doesn't :C
    
      var editedCell = sheet.getActiveCell();
      var dateCol = 1;
      var dateCell = sheet.getRange(editedCell.getRow(), dateCol);
    
      debugCell.setValue(editedCell.getColumn());
    
      if(!dateCell.getValue() && editedCell.getColumn() != dateCol){   
        dateCell.setValue(new Date());
      }
    }
    

    【讨论】:

      猜你喜欢
      • 2015-11-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多