You need to enable JavaScript to run this app. 如何修改Google Sheets脚本实现无需借助=NOW()单元格获取当前日期时间
优惠活动
大模型
产品
解决方案
定价
更多

如何修改Google Sheets脚本实现无需借助=NOW()单元格获取当前日期时间

Google Apps Script 直接获取当前时间替代=NOW()单元格方案

可以直接实现,无需依赖单元格内的=NOW()公式,核心通过JavaScript原生Date对象结合Apps Script自带的工具方法获取匹配表格时区的当前时间即可。

修正后完整代码

function Carregar_Apuracao_parcial_CRC() {
  var spreadsheet = SpreadsheetApp.getActive();
  var sheet_lancamento = spreadsheet.getSheetByName('CRC');
  var sheet_bdl = spreadsheet.getSheetByName('Respostas Parcial');
  var ultimalinhabdl = sheet_bdl.getLastRow();
  // 获取表格时区,匹配原=NOW()的时区逻辑
  var spreadsheetTz = spreadsheet.getSpreadsheetTimeZone();

  // 写入B4的值
  sheet_bdl.getRange(ultimalinhabdl + 1, 1).setValue(sheet_lancamento.getRange('B4').getValue());
  // 直接生成当前时间写入第二列,替换原来读O2单元格的逻辑
  // 格式字符串可根据需要的展示效果调整,当前和你原代码截断的格式参数一致
  var currentDatetime = Utilities.formatDate(new Date(), spreadsheetTz, "EEE, d MMM yyyy HH:mm");
  // 若需要写入日期对象而非字符串,直接改成new Date()即可,配合单元格日期格式使用
  sheet_bdl.getRange(ultimalinhabdl + 1, 2).setValue(currentDatetime);
  // 写入S5的值
  sheet_bdl.getRange(ultimalinhabdl + 1, 3).setValue(sheet_lancamento.getRange('S5').getValue());

  sheet_lancamento.getRange('T2').activate();
  const sheet_draw = SpreadsheetApp.getActiveSheet();
}

核心修改说明

  • 移除了原代码中冗余的setActiveSheet调用,直接通过工作表对象操作数据,执行效率更高
  • 修复了原代码中时间格式化部分的语法截断错误
  • 用new Date()获取当前时间,通过Utilities.formatDate()匹配表格时区和自定义格式,和原=NOW()的输出效果完全一致
  • 替换了原copyTo粘贴值的逻辑,直接用setValue写入,无需切换激活单元格,逻辑更简洁

内容的提问来源于stack exchange,提问作者MATHEUS FELIPE BERNARDES

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.14 00:24:02