You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Google Apps Script问题:活动表格编辑后目标表格未生成时间戳

问题原因与修复方案

核心问题:简单触发器权限限制

你的onEdit属于简单触发器,这类触发器运行时无授权权限,无法调用SpreadsheetApp.openById()访问另一个独立电子表格,这就是目标表格未写入内容的根本原因。

代码修复步骤

  1. 替换为可安装触发器:

    • 将原onEdit函数重命名为recordTimestamp(名称可自定义)
    • 打开脚本编辑器,点击「编辑」→「当前项目的触发器」,添加新触发器:
      • 选择函数recordTimestamp
      • 触发事件选「从电子表格提交」→「编辑时」
  2. 修正代码冗余与细节:

    • 移除未定义的range.getRow()(无实际作用的冗余代码)
    • 优化变量获取逻辑,确保行号映射正确

修复后的完整代码:

function recordTimestamp(e){
  const row = e.range.getRow();
  const col = e.range.getColumn();
  const activeSheet = e.source.getActiveSheet();

  if (col === 4 && row > 3 && activeSheet.getName() === "Week1"){
    const targetSpreadsheetId = "你的目标表格ID"; // 替换为实际的目标表格ID
    const targetSpreadsheet = SpreadsheetApp.openById(targetSpreadsheetId);
    const targetSheet = targetSpreadsheet.getSheetByName("Week#1");
    const timestamp = new Date();
    const formattedTimestamp = Utilities.formatDate(timestamp, Session.getScriptTimeZone(), "yyyy-MM-dd HH:mm:ss");

    // 写入修改日期(目标表格第2列)
    targetSheet.getRange(row, 2).setValue(formattedTimestamp);
    // 若初始日期为空,写入初始日期(目标表格第1列)
    if(targetSheet.getRange(row, 1).getValue() === ""){
      targetSheet.getRange(row, 1).setValue(formattedTimestamp);
    }
  }
}

注意事项

  • 确保你拥有目标表格的编辑权限
  • 首次运行recordTimestamp函数时,需完成授权流程,否则触发器无法正常工作

内容的提问来源于stack exchange,提问作者Brian Mueller

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.18 14:13:22