【发布时间】:2019-11-18 22:02:59
【问题描述】:
免责声明:我是 Google Apps 脚本新手。
我正在尝试在 Google 表格中创建一个时间表,让用户可以打卡和打卡以记录给定项目的小时数。我从YouTube video 借来了关于设置整个事情的一般结构的代码。
这是空白考勤表的样子。这是非常基本的:
我创建了一个用户按钮(在右侧),用户在其中按下“开始”,单元格 A2 将输入时间戳。然后用户可以按下“结束”按钮,将出现第二个时间戳,这次是在 B2 中,以及在 C2 中测量两个时间戳中的增量的简单计算,从而给出在给定时间上花费的持续时间任务或项目。这是它的样子:
当用户需要再次按“开始”时,单元格 A3 中会出现一个新的时间戳,依此类推,同时还会为每个新行计算一个新的增量。
问题:我无法在 C 列中获得简单的增量计算来递增每个新行,因此 setFormula 函数不包含对单元格 A2 和 B2 的硬编码引用。到目前为止,请参阅下面的代码:
function setValue(cellName, value) {
SpreadsheetApp.getActiveSpreadsheet().getRange(cellName).setValue(value);
}
function getValue(cellName) {
return SpreadsheetApp.getActiveSpreadsheet().getRange(cellName).getValue();
}
function getNextRow() {
return SpreadsheetApp.getActiveSpreadsheet().getLastRow() + 1;
}
function addStartRecord (a) {
var row = getNextRow();
setValue('A' + row, a);
}
function addEndRecord (b, c) {
var row = getNextRow()-1;
setValue('B' + row, b);
setValue('C' + row, c);
}
function punchIn() {
addSRecord(new Date());
}
function punchOut() {
addERecord(new Date(), '=B2-A2');
}
问题在于底部的punchOut() 函数。关于在每个新行中递增此增量计算器的最佳方法的任何想法?
注意:我看到类似问题here 的一个很好的答案,但是代码在包含data[i] = ['=A' + i+1.toString() + ' + 1 ' ] 的行之后在脚本编辑器中抛出错误。另外,我不想为增量计算设置一个确定的最后一行(例如本例中的 20)。我希望用户能够根据需要为项目记录尽可能多的新开始/结束时间。
编辑:这是时间表的link,以便您可以测试代码。
【问题讨论】:
-
您能否为您的工作表(或副本)提供编辑权限,以便能够测试代码?另外,一个用户是否可以在另一个用户按下他们的结束按钮之前按下他们的开始按钮?意思是,这是给每个人的单张纸吗?
-
当然@AlbertoMolina - 我如何在这个论坛上提供一张表格?只发个链接?并且该工作表仅适用于单个用户。
-
您可以更新您的问题(编辑)并在其中包含链接,您可以从电子表格本身获取共享链接,在右上角您会看到共享按钮,您可以在那里获得可分享的链接
标签: google-apps-script google-sheets