Google Sheets Clockin函数添加菜单点击时的时间戳与日期戳问题
Google Sheets打卡按钮:时间戳与日期戳添加失败问题
我正在为组织在Google Sheets中创建打卡按钮。选择“Clock in”菜单项(对应Clockin函数)时,会插入新行,需要在M4单元格添加格式为“10:08pm”的当前时间戳、O4单元格添加格式为“2 Oct 23”的日期戳。目前N4单元格的动态更新时间已实现,但时间戳和日期戳无法正常添加。作为脚本新手,尝试多种方案未果,附上现有代码寻求解决方法及解释。
function Clockin() { var sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName('Hours1'); var lastRow = sheet.getLastRow(); var lastColumn = sheet.getLastColumn(); var range = sheet.getRange(4,2,lastRow-5,lastColumn-4); //spreadsheet.getActiveRange(range) range .sort({column: 2, ascending: false}); sheet.insertRowsAfter(3, 1); var sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName('Hours1'); ///sheet.getRange('M4').INSERT TIME HERE in this format "10:08pm" ;/// sheet.getRange('N4').setFormula('=now()-today()'); ///sheet.getRange('M4').INSERT DATE HERE in this format "2 Oct 23" ;/// }
我试过多种时间戳函数,它们单独运行效果很好,但不知道如何将其关联到Clockin函数中。
解决方法及代码修改
直接在Clockin函数中通过setValue()结合日期格式化方法,就能给指定单元格添加符合要求的时间戳和日期戳,修改后的完整代码如下:
function Clockin() { var sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName('Hours1'); var lastRow = sheet.getLastRow(); var lastColumn = sheet.getLastColumn(); var range = sheet.getRange(4,2,lastRow-5,lastColumn-4); range.sort({column: 2, ascending: false}); sheet.insertRowsAfter(3, 1); // 获取当前时间 var now = new Date(); // 格式化时间为"10:08pm"格式并写入M4 var timeFormat = Utilities.formatDate(now, Session.getScriptTimeZone(), "h:mma"); sheet.getRange('M4').setValue(timeFormat); // 动态更新时间(原代码保留) sheet.getRange('N4').setFormula('=now()-today()'); // 格式化日期为"2 Oct 23"格式并写入O4 var dateFormat = Utilities.formatDate(now, Session.getScriptTimeZone(), "d MMM yy"); sheet.getRange('O4').setValue(dateFormat); }
关键部分解释
- 获取当前时间:用
new Date()获取当前系统时间,这是所有格式化操作的基础。 - 时间格式化:使用
Utilities.formatDate()方法,三个参数分别是:要格式化的日期对象、脚本所在时区(Session.getScriptTimeZone()避免时区偏差)、格式字符串"h:mma"——对应10:08pm的12小时制带上午/下午标识的格式。 - 日期格式化:同样调用
Utilities.formatDate(),格式字符串"d MMM yy"对应2 Oct 23的日期格式(d为数字日期,MMM为月份缩写,yy为两位年份)。 - 写入单元格:通过
setValue()将格式化后的字符串直接写入目标单元格,把时间/日期生成逻辑嵌入Clockin函数的执行流程中,解决了单独函数无法关联的问题。
内容的提问来源于stack exchange,提问作者Miss Cairo
相关产品推荐
相关产品推荐

