【发布时间】:2019-03-15 21:05:19
【问题描述】:
我正在尝试创建一个基本的时间戳脚本。简而言之,我运行了一些经历不同状态(状态 1、2、3 等)的任务。我想跟踪每个任务(行)的每个状态的时间戳。
我已经有一个可以这样做的代码,但只有当我在第一列中手动输入状态时(时间戳已正确添加到它们各自的状态列中),但我不能一次更新多个.
如果我粘贴多个“状态”,脚本只会根据第一行运行时间戳,而不考虑其他状态。这是一个非常简短的video,它演示了它在做什么。
我将在一个自动更新的大文件中使用该脚本,但我无法让它工作。这是我目前正在使用的代码(如果它很简单,请道歉,我充其量是业余爱好者)。
function OnEdit(e) {
var range = e.range;
var sheet = range.getSheet();
var row = range.getRow();
var rows = range.getNumRows();
var date = new Date();
var dates = sheet
.getRange(row, 3, rows)
.getValues()
.map(function(row) {return [row[0] || date];});
if(sheet.getRange(row, 1,rows).getValue()==1) { sheet
.getRange(row, 2, rows)
.setValues(dates);
}
else
{if(sheet.getRange(row, 1,rows).getValue()==2) { sheet
.getRange(row, 3, rows)
.setValues(dates);
}
else
{if(sheet.getRange(row, 1,rows).getValue()==3) { sheet
.getRange(row, 4, rows)
.setValues(dates);
}
}
}
}
如果 status=1,则在“Col B”中插入时间戳,如果 status=2,则在“Col C”中插入时间戳,依此类推。
Here 是我正在工作的工作表。
【问题讨论】:
-
这没有意义
if(sheet.getRange(row, 1,rows).getValue()==1)如果rows >1你只会得到左上角的单元格值。 -
我相信这是列,如果第 1 列中的行 = 1,则在第 2 列中插入时间戳。依此类推。随意尝试一下:docs.google.com/spreadsheets/d/… 然而,对我来说,问题是一次做多个(粘贴多个状态时)。
标签: google-apps-script google-sheets timestamp