首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何在修改多列时输入多个时间戳?

如何在修改多列时输入多个时间戳?
EN

Stack Overflow用户
提问于 2021-02-13 14:31:53
回答 1查看 147关注 0票数 1

如果修改了第1至第9栏中的任何一列,则可以修改第10栏输入时间戳,最后在第11栏修改时间戳。

我知道在第一次修改每个列时需要获得粒度和时间戳,同时维护现有的时间戳设置。

我相信这是一个简单的“如果”声明,但我似乎无法弄清楚。

这是我到目前为止所拥有的。这给了我第一次修改第1列到第9列之间的任何单元格的日期和时间,并在第10列上返回日期和时间,如果做了任何更改,则在第11列上返回最后修改的日期和时间。现在,我想记录第一次修改第1-9列的时间,并从第12栏开始在同一张纸上输入它们。

代码语言:javascript
运行
复制
function addTimestamp (e){
 //variables
 var startRow = 2;
 var ws = "Daily Log"
 var currentDate = 1

 //get modified row and column
 var row = e.range.getRow();
 var col = e.range.getColumn();

 if(([1,2,3,4,5,6,7,8,9].includes(col))&& row >= startRow 
 &&e.source.getActiveSheet().getName() ==ws){

  var currentDate = new Date();
  e.source.getActiveSheet().getRange(row, 11).setValue(currentDate);
  if(e.source.getActiveSheet().getRange(row, 10).getValue()== ""){
    e.source.getActiveSheet().getRange(row,10).setValue(currentDate);
  } // END IF check if date created exists
 } // END IF column, row, worksheet
}

特别感谢@raygun帮助我创建uniq驱动程序ID。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-02-13 14:52:59

解释:

你的目标是:

  • 将第1-9列中的任何单元格第一次修改的日期时间保存在第10列中。
  • 对于第1-9列中修改的每个单元格,分别在列12-20 中添加最后修改的标记。例如,如果修改了第1列,则更新第12列中的更新时间戳,如果修改了第2列,则更新第13列等等。

出于性能原因,将经常使用的代码存储在变量中是一种很好的做法:

  • 例如,e.source.getActiveSheet()在代码中使用了4次,每次调用它都会消耗资源。您可以将其存储在变量中,然后使用该变量。

解决方案:

代码语言:javascript
运行
复制
function addTimestamp (e){
 //variables
 const startRow = 2;
 const ws = "Daily Log"
 //get modified row and column
 const rng = e.range;
 const as = rng.getSheet();
 const row = rng.getRow();
 const col = rng.getColumn();
  
 if(col>=1 && col<=9&& row >= startRow && as.getName() ==ws){
  const currentDate = new Date();
  const rng_all = as.getRange(row, col+11);
  const rng_ten = as.getRange(row, 10);
  as.getRange(row,11).setValue(currentDate);
  if(rng_all.getValue()== ""){
      rng_all.setValue(currentDate)
   }
  if(rng_ten.getValue()== ""){
      rng_ten.setValue(currentDate);
  } 
 } 
}

边注:

对于这个特定的任务,您不需要一个可安装触发器。您可以将addTimestamp(e)替换为onEdit(e) (简易触发器),它也可以工作。但是,这取决于您喜欢什么,但阅读差异(在我提供的超链接中)将是一个好主意。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/66186226

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档