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

如何修改Google Apps Script实现多列日志分表记录?

Google Sheets多列分表日志记录脚本修改方案

现有脚本可记录'Postcode Checker'工作表第4列的输入内容到'app_search_logs',需新增规则:记录该工作表第10、11、12、13、14列的输入内容到'PUB_search_logs'工作表。以下是修改后的完整可运行代码:

function onEdit(e) {
  if (!e) {
    throw new Error(
      'Please do not run the onEdit(e) function in the script editor window. '
      + 'It runs automatically when you hand edit the spreadsheet.'
    );
  }
  logColumns_(e);
}
 
/**
* Automatically logs changes in columnsToWatch in sheetsToWatch.
*
* @param {Object} e The onEdit() event object.
*/
function logColumns_(e) {
  // version 1.2, modified to support multi-rule logging
  if (!e.value) {
    return;
  }
 
  ////////////////////////////////
  // [START modifiable parameters]
  const parameters = [
    {
      sheetsToWatch: /^(Postcode Checker)$/i,
      columnsToWatch: [4],
      changelogSheetName: 'app_search_logs',
    },
    {
      sheetsToWatch: /^(Postcode Checker)$/i,
      columnsToWatch: [10, 11, 12, 13, 14],
      changelogSheetName: 'PUB_search_logs',
    },
  ];
  // [END modifiable parameters]
  ////////////////////////////////
 
  const sheet = e.range.getSheet();
  const sheetName = sheet.getName();
  // 遍历所有配置规则,匹配到的都执行日志记录
  parameters.forEach(settings => {
    if (!sheetName.match(settings.sheetsToWatch) 
        || !settings.columnsToWatch.includes(e.range.columnStart) 
        || sheetName === settings.changelogSheetName) {
      return;
    }
    const columnLabel = sheet.getRange(sheet.getFrozenRows() || 1, e.range.columnStart).getValue();
    const rowLabel = sheet.getRange(e.range.rowStart, sheet.getFrozenColumns() || 1).getValue();
    const cellAddress = e.range.getA1Notation();
    let changelogSheet = e.source.getSheetByName(settings.changelogSheetName);
    if (!changelogSheet) {
      changelogSheet = e.source
        .insertSheet(settings.changelogSheetName, e.source.getNumSheets())
        .appendRow(['Timestamp', 'Sheet name', 'Cell address', 'Column label', 'Row label', 'Value entered']);
      changelogSheet.setFrozenRows(1);
    }
    // 补全日志行的所有字段,和表头对应
    changelogSheet.appendRow([new Date(), sheetName, cellAddress, columnLabel, rowLabel, e.value]);
  });
}

关键修改说明

  • 在parameters数组中新增第二个配置对象,明确指定监听第10-14列,日志目标表为PUB_search_logs
  • 将原代码中仅匹配第一个规则的逻辑改为遍历所有配置,确保符合条件的列都会触发对应日志记录
  • 修复了原代码appendRow参数缺失的问题,现在日志行内容和表头字段完全对应,避免日志内容错位

内容的提问来源于stack exchange,提问作者James 'Mook' Pite

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.25 08:14:55