繁体   English   中英

删除或更新一定范围的单元格时,Google表格时间戳记脚本未更新

[英]google sheets timestamp script not updating when deleting or updating a range of cells

这是我的第一次发贴,所以我希望我做对了一切:)

我已经在Google工作表中实现了一个脚本,该脚本在该行中的单元格进行编辑时会在B列中创建一个时间戳。

它工作完美,除了:

  1. 当我选择一个单元格范围并按“删除”时,即使已修改了多个单元格,也只有一个时间戳更新(活动单元的时间戳)
  2. 如果我向下拖动以将值从一个单元格自动填充到多个单元格中(例如,如果我从A1向下拖动到A5,以使用A1中的值填充A2-A5),则仅使用第一个时间戳(例如, A2)更新,其余部分保持原样。

任何想法如何解决这些问题?

这是我的代码

 function onEdit(e) { var s = SpreadsheetApp.getActiveSheet(); var r = s.getActiveCell(); if( r.getColumn() != 2 && e.source.getActiveSheet().getName() === "MySheet") { //checks the column & checks the sheet is the correct one var row = r.getRow(); var time = new Date(); time = Utilities.formatDate(time, "GMT+10:00", "dd/MM/yyyy HH:mm:ss"); SpreadsheetApp.getActiveSheet().getRange('B' + row.toString()).setValue(time); }; }; 

这是一个包含代码的电子表格示例:

https://docs.google.com/a/eventsafetyservices.com.au/spreadsheets/d/1hFtS-diq_8QsWwqFTIlHg8zHxpvVUsDZex0nSuvXizg/edit?usp=sharing

通常,将事件对象用于与该操作相关的所有事情都是一种好习惯。

可以通过进一步使用事件的范围来处理多行,以获取事件的范围。

function onEdit(e) {
  var r = e.range;

  if(r.getColumn() !== 2 && r.getSheet().getName() === "MySheet") {
    var row = r.getRow();
    var lastRow = r.getLastRow();
    var time = new Date();
    time = Utilities.formatDate(time, "GMT+10:00", "dd/MM/yyyy HH:mm:ss");

    r.getSheet().getRange(row, 2, lastRow - row + 1, 1).setValue(time);
  };
 };

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM