gpt4 book ai didi

javascript - 如何在使用 Google Apps 脚本填充特定单元格时自动填充当前时间和日期

转载 作者:行者123 更新时间:2023-11-30 19:12:04 26 4
gpt4 key购买 nike

我希望日期和时间填充到两个不同的单元格中,当它旁边的列中的单元格填充为"is"时。这个想法是创建结帐时间和日期。

脚本的上半部分是check in,下半部分是checkout,不过目前只是check out time,check out time不起作用。有什么建议吗?

function onEdit(event) {
var timezone = "GMT+1";
var timestamp_format = "hh:mm:ss"; // Timestamp Format.
var timestamp_formatT = "dd-MM-yyyy";
var updateColName = "Student Name";
var timeStampColName = "Time Out";
var sheet = event.source.getSheetByName('2019/20');
var actRng = event.source.getActiveRange();
var editColumn = actRng.getColumn();
var index = actRng.getRowIndex();
var headers = sheet.getRange(1, 1, 1, sheet.getLastColumn()).getValues();
var dateCol = headers[0].indexOf(timeStampColName);
var updateCol = headers[0].indexOf(updateColName);
updateCol = updateCol + 1;
if (dateCol > -1 && index > 1 && editColumn == updateCol) {
var cell = sheet.getRange(index, dateCol + 1);
var cellT = sheet.getRange(index, dateCol + 2);
var date = Utilities.formatDate(new Date(), timezone, timestamp_format);
var dateT = Utilities.formatDate(new Date(), timezone, timestamp_formatT);
cell.setValue(date);
cellT.setValue(dateT);
}
var updateColName2 = "Check In";
var timeStampColName2 = "Time In";
var actRng2 = event.source.getActiveRange();
var editColumn2 = actRng2.getColumn();
var index2 = actRng2.getRowIndex();
var headers2 = sheet.getRange(1, 1, 1, sheet.getLastColumn()).getValues();
var dateCol2 = headers2[0].indexOf(timeStampColName2);
var updateCol2 = headers2[0].indexOf(updateColName2);
updateCol2 = updateCol2 + 1;
if (dateCol2 > -1 && index2 > 1 && editColumn2 == updateCol2) {
var cell2 = sheet.getRange(index2, dateCol2 + 1);
var date2 = Utilities.formatDate(new Date(), timezone, timestamp_format);
cell2.setValue(date2);
}
}

以下表格的屏幕截图(如果有帮助的话)。

enter image description here

最佳答案

由于一个非常小的细节,它无法正常工作。列标题称为 Check IN,在脚本中您正在寻找一个名为 Check In 的标题。所以你只需要改变这个:

var updateColName2 = "Check In";

对此:

var updateColName2 = "Check IN";

此外,如果您希望仅当 Check IN 列的值为 时才填充 Time InDate In 列是的,您应该添加一个新条件,这样您就可以更改它:

if (dateCol2 > -1 && index2 > 1 && editColumn2 == updateCol2) {

收件人:

if (dateCol2 > -1 && index2 > 1 && editColumn2 == updateCol2 && actRng2.getValue() == "Yes") {

最后,你不需要定义一个headers2变量,它和headers是一样的。

编辑

此外,您应该在最后一个 if block 中添加此行:

var date2T = Utilities.formatDate(new Date(), timezone, timestamp_formatT);
cell2T.setValue(date2T);

所以,完整的代码可能是这样的:

function onEdit(event) {
var timezone = "GMT+1";
var timestamp_format = "hh:mm:ss"; // Timestamp Format.
var timestamp_formatT = "dd-MM-yyyy";
var updateColName = "Student Name";
var timeStampColName = "Time Out";
var sheet = event.source.getSheetByName('2019/20');
var actRng = event.source.getActiveRange();
var editColumn = actRng.getColumn();
var index = actRng.getRowIndex();
var headers = sheet.getRange(1, 1, 1, sheet.getLastColumn()).getValues();
var dateCol = headers[0].indexOf(timeStampColName);
var updateCol = headers[0].indexOf(updateColName);
updateCol = updateCol + 1;
if (dateCol > -1 && index > 1 && editColumn == updateCol) {
var cell = sheet.getRange(index, dateCol + 1);
var cellT = sheet.getRange(index, dateCol + 2);
var date = Utilities.formatDate(new Date(), timezone, timestamp_format);
var dateT = Utilities.formatDate(new Date(), timezone, timestamp_formatT);
cell.setValue(date);
cellT.setValue(dateT);
}
var updateColName2 = "Check IN";
var timeStampColName2 = "Time In";
var actRng2 = event.source.getActiveRange();
var editColumn2 = actRng2.getColumn();
var index2 = actRng2.getRowIndex();
var dateCol2 = headers[0].indexOf(timeStampColName2);
var updateCol2 = headers[0].indexOf(updateColName2);
updateCol2 = updateCol2 + 1;
var editedValue = actRng2.getValue();
if (dateCol2 > -1 && index2 > 1 && editColumn2 == updateCol2 && editedValue == "Yes") {
var cell2 = sheet.getRange(index2, dateCol2 + 1);
var cell2T = sheet.getRange(index2, dateCol2 + 2);
var date2 = Utilities.formatDate(new Date(), timezone, timestamp_format);
var date2T = Utilities.formatDate(new Date(), timezone, timestamp_formatT);
cell2.setValue(date2);
cell2T.setValue(date2T);
}
}

希望对您有所帮助。

关于javascript - 如何在使用 Google Apps 脚本填充特定单元格时自动填充当前时间和日期,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58372425/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com