在 Google 工作表中每第 4 列重复一次的时间戳
Timestamp to repeat every 4th column in Google Sheets
我需要我的团队在 A 列中输入他们的名字,在 B 列中输入 LOGIN 或 LOGOUT,我需要在 C 列中输入登录时间戳,在 D 列中输入注销时间戳。我需要重复 30 天(一个月) ) 在每个 sheet 中,这意味着 B、C 和 D 列将在 sheet 中重复 30 次。
名称 - LOGIN/LOGOUT - 登录时间戳 - 登出时间戳
我在 YouTube 上找到了这段代码(略微调整),它在第 2 列和第 3 列中创建了两个时间戳,当第 1 列更新时,第二个更新到新时间,而第一个保持不变。我计划通过在用户输入 LOGIN 时隐藏第二个时间戳(使用条件格式)来使用它,然后在用户输入 LOGOUT 时取消隐藏它。但是,我不知道如何在随后的日子里每隔 4 列调用一次此脚本。我花了将近一整天的时间来解决这个问题,但我的脚本知识非常有限。任何帮助是极大的赞赏。非常感谢。
function onEdit(e) {
var row = e.range.getRow();
var col = e.range.getColumn();
if(col === 1 && row >= 1 && e.source.getActiveSheet().getName() === "Test"){
var currentDate = new Date();
e.source.getActiveSheet().getRange(row,3).setValue(currentDate);
if(e.source.getActiveSheet().getRange(row,2).getValue() == ""){
e.source.getActiveSheet().getRange(row,2).setValue(currentDate);
}
}
}
答案:
- 获取已编辑的单元格。
- 检查单元格的列是否在带有
%
运算符的 Login/Logout 列中。
- 如果编辑单元格右侧的单元格为空,请输入日期。否则,在右侧两个单元格中输入日期。
代码:
function onEdit(e) {
var row = e.range.getRow();
var col = e.range.getColumn();
var curRow = e.source.getActiveSheet().getRange(row + ':' + row).getValues();
var sheetNames = ['Put', 'your', 'sheet', 'names', 'here', '...', 'etc']
if (!sheetNames.includes(e.source.getActiveSheet().getName())) {
return;
}
if((col + 1) % 3 === 0 && row >= 1) {
var currentDate = new Date();
if (e.source.getActiveSheet().getRange(row, col + 1).isBlank()) {
e.source.getActiveSheet().getRange(row, col + 1).setValue(currentDate);
}
else {
e.source.getActiveSheet().getRange(row, col + 2).setValue(currentDate);
}
}
}
参考:
我需要我的团队在 A 列中输入他们的名字,在 B 列中输入 LOGIN 或 LOGOUT,我需要在 C 列中输入登录时间戳,在 D 列中输入注销时间戳。我需要重复 30 天(一个月) ) 在每个 sheet 中,这意味着 B、C 和 D 列将在 sheet 中重复 30 次。
名称 - LOGIN/LOGOUT - 登录时间戳 - 登出时间戳
我在 YouTube 上找到了这段代码(略微调整),它在第 2 列和第 3 列中创建了两个时间戳,当第 1 列更新时,第二个更新到新时间,而第一个保持不变。我计划通过在用户输入 LOGIN 时隐藏第二个时间戳(使用条件格式)来使用它,然后在用户输入 LOGOUT 时取消隐藏它。但是,我不知道如何在随后的日子里每隔 4 列调用一次此脚本。我花了将近一整天的时间来解决这个问题,但我的脚本知识非常有限。任何帮助是极大的赞赏。非常感谢。
function onEdit(e) {
var row = e.range.getRow();
var col = e.range.getColumn();
if(col === 1 && row >= 1 && e.source.getActiveSheet().getName() === "Test"){
var currentDate = new Date();
e.source.getActiveSheet().getRange(row,3).setValue(currentDate);
if(e.source.getActiveSheet().getRange(row,2).getValue() == ""){
e.source.getActiveSheet().getRange(row,2).setValue(currentDate);
}
}
}
答案:
- 获取已编辑的单元格。
- 检查单元格的列是否在带有
%
运算符的 Login/Logout 列中。 - 如果编辑单元格右侧的单元格为空,请输入日期。否则,在右侧两个单元格中输入日期。
代码:
function onEdit(e) {
var row = e.range.getRow();
var col = e.range.getColumn();
var curRow = e.source.getActiveSheet().getRange(row + ':' + row).getValues();
var sheetNames = ['Put', 'your', 'sheet', 'names', 'here', '...', 'etc']
if (!sheetNames.includes(e.source.getActiveSheet().getName())) {
return;
}
if((col + 1) % 3 === 0 && row >= 1) {
var currentDate = new Date();
if (e.source.getActiveSheet().getRange(row, col + 1).isBlank()) {
e.source.getActiveSheet().getRange(row, col + 1).setValue(currentDate);
}
else {
e.source.getActiveSheet().getRange(row, col + 2).setValue(currentDate);
}
}
}