【问题标题】:How do I make an apps script that will automatically input a timestamp when a cell is updated to certain criteria?如何制作一个应用程序脚本,当单元格更新为特定条件时自动输入时间戳?
【发布时间】:2021-03-24 19:23:05
【问题描述】:

我已经包含了一个测试表,以使这更容易: https://docs.google.com/spreadsheets/d/1XnKnj0lkLmWrs1GcQRBUc_HKd-WEajlKmsX_Rlj-fqI/edit?usp=sharing

我希望发生的是,当我从 D 列的下拉列表中选择“开始”选项时,它会自动在同一行中用当前时间和日期填充 F 列。并且最好使这个不可编辑。然后,当 D 列中的下拉菜单更改为“已完成”时,它会在 G 列中填充另一个时间戳,这同样应该使其不可编辑。

我尝试了各种代码组合,但找不到合适的组合。我对javascript不是很有经验,也不知道如何自己编写。

【问题讨论】:

  • 您可能想要使用 onEdit 触发器。

标签: google-apps-script google-sheets


【解决方案1】:

您可以使用Triggers

触发器让 Apps 脚本在某个特定的情况下自动运行一个函数 发生事件,例如编辑单元格。

试试这个:

function onEdit(e) {
  var row = e.range.getRow();
  var col = e.range.getColumn();
  if(row > 1 && col == 4){
    var selected = e.value;
    var date = Utilities.formatDate(new Date(), "GMT", "MM/dd/yyyy-HH:mm:ss");
    var sh = e.range.getSheet();
    var colEdit = 0;
    if(selected == "Started"){
      colEdit = parseFloat(col+2);
    }else{
      colEdit = parseFloat(col+3);
    }
    var editedRange = sh.getRange(row,parseInt(colEdit),1,1);
    editedRange.setValue(date);
    
    //Optional: Uncomment the code below if you want to add protection to the cell    
    //This will make the cell uneditable to the other users.
    //editedRange.protect();
  } 
}

注意:由于您是电子表格的所有者,因此您不能将单元格设为不可编辑。但您可以添加Protection 使其他人无法编辑。

输出:

【讨论】:

    猜你喜欢
    • 2021-04-19
    • 1970-01-01
    • 2020-05-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-06-13
    • 2023-02-25
    • 2020-01-30
    相关资源
    最近更新 更多