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

使用setValues的Google Script超时,请求协助转换为Sheets API实现

解决方案:用Sheets API批量读写优化合并脚本

前置步骤:启用Sheets API

  1. 打开Google Apps Script编辑器
  2. 点击左侧「服务」>「添加服务」,找到「Google Sheets API」并启用

改写后的脚本

function getDataWithSheetsAPI() {
  const TARGET_SPREADSHEET_ID = '[ID for end result]';
  const TARGET_SHEET_NAME = 'Sheet1';
  const SOURCE_FILE_NAMES = ['File1', 'File2'];
  
  // 清空目标表A2及以下数据
  Sheets.Spreadsheets.Values.clear({}, TARGET_SPREADSHEET_ID, `${TARGET_SHEET_NAME}!A2:Z`);
  
  // 批量收集所有需合并的数据(跳过表头)
  let allData = [];
  for (const fileName of SOURCE_FILE_NAMES) {
    const files = DriveApp.searchFiles(`title='${fileName}' and mimeType='${MimeType.GOOGLE_SHEETS}' and trashed=false`);
    const file = files.hasNext() ? files.next() : null;
    if (!file) {
      console.log(`未找到Google表格文件:${fileName}`);
      continue;
    }
    
    const sourceSpreadsheetId = file.getId();
    const sheets = Sheets.Spreadsheets.get(sourceSpreadsheetId).sheets;
    for (const sheet of sheets) {
      const sheetName = sheet.properties.title;
      // 读取当前sheet的非表头数据
      const response = Sheets.Spreadsheets.Values.get(sourceSpreadsheetId, `${sheetName}!A2:Z`);
      const values = response.values || [];
      allData = allData.concat(values);
    }
  }
  
  // 一次性写入所有数据到目标表
  if (allData.length > 0) {
    const targetRange = `${TARGET_SHEET_NAME}!A2`;
    Sheets.Spreadsheets.Values.update(
      { values: allData },
      TARGET_SPREADSHEET_ID,
      targetRange,
      { valueInputOption: 'RAW' }
    );
  }
}

核心优化说明

  • 批量读写替代多次操作:原脚本每次追加数据都调用setValues,属于多次独立写请求;改写后先一次性收集所有数据,再通过Sheets API单次写入,大幅减少网络开销,解决超时问题
  • 高效数据读取:用Sheets API的Values.get读取数据,性能优于SpreadsheetApp原生方法,尤其适配大体积数据集
  • 精简操作流程:直接通过API清空目标表,避免原生clear()带来的额外资源消耗

注意事项

  • 替换脚本中的[ID for end result]为你的目标表格ID
  • 若源表格列数超过Z列,需调整范围(如将A2:Z改为A2:ZZ)
  • 确保账号拥有源表格和目标表格的读写权限

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.26 13:45:27