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

如何用AppScript读取非自有.xlsx导入的Google Sheets数据并自动导入

问题分析与解决办法

一、先修正脚本里的明显错误

你的脚本有两个用法错误,直接导致读取失败:

  • SpreadsheetApp.openByUrl() 要传完整表格URL,不是文件ID。想用ID的话,改用 SpreadsheetApp.openById('文件ID')。
  • SpreadsheetApp.getActiveSpreadsheet() 不用传参数,它是获取当前绑定脚本的表格。要指定目标表格,同样用 openById 或者 openByUrl。

修正后的脚本:

function rePlaceSheet () {
  // 用ID打开源表格
  let source = SpreadsheetApp.openById('14rIrUEOpLNWfQjIW29v1Zc9eDkaomMBx').getSheetByName('sheet1');
  // 用ID打开目标表格
  let target = SpreadsheetApp.openById('1xjW28VmFypAOjHi_FJ_7MGCigGrIIp-AgTkfuR7m7QQ').getSheetByName('sheet1');
  
  let sRange = source.getDataRange();
  let rawData = sRange.getValues();

  target.clear({contentsOnly: true});
  // 按数据实际行列数写入,避免源和目标行列不匹配报错
  target.getRange(1, 1, rawData.length, rawData[0].length).setValues(rawData); 
}

二、解决权限问题

你不是源表格所有者,且它是xlsx导入Drive后转的Sheets,必须满足这两点:

  • 源表格所有者已经给你至少查看权限,要么直接添加你的邮箱为协作者,要么设置成“知道链接的人可查看/编辑”。
  • 第一次运行脚本时,弹出的授权窗口里,一定要允许脚本访问这个源表格。如果授权时没看到相关权限选项,让所有者重新分享一次文件。

三、特殊情况处理:源文件还是xlsx格式

如果源文件只是用Sheets打开,但实际还是xlsx格式存储,上面的方法可能失效,试试用Drive API解析:

  1. 在脚本编辑器里,点击「服务」→ 添加「Drive API」服务。
  2. 用下面的代码读取并导入:
function importXlsxFromDrive() {
  const sourceFileId = '14rIrUEOpLNWfQjIW29v1Zc9eDkaomMBx';
  const targetSheet = SpreadsheetApp.openById('1xjW28VmFypAOjHi_FJ_7MGCigGrIIp-AgTkfuR7m7QQ').getSheetByName('sheet1');
  
  // 获取xlsx文件二进制内容
  const file = DriveApp.getFileById(sourceFileId);
  const blob = file.getBlob();
  
  // 创建临时表格解析xlsx
  const tempSpreadsheet = SpreadsheetApp.create('TempXlsxImport');
  const tempSheet = tempSpreadsheet.getSheetByName('Sheet1');
  
  // 导入xlsx内容到临时表格(适合纯文本格式的xlsx)
  tempSheet.getRange('A1').setValues(Utilities.parseCsv(blob.getDataAsString()));
  
  // 把临时表格的数据写入目标表格
  const data = tempSheet.getDataRange().getValues();
  targetSheet.clear({contentsOnly: true});
  targetSheet.getRange(1, 1, data.length, data[0].length).setValues(data);
  
  // 删除临时表格
  DriveApp.getFileById(tempSpreadsheet.getId()).setTrashed(true);
}

要是xlsx有复杂格式(合并单元格、公式等),建议先把源文件转成正式的Google Sheets:右键Drive里的xlsx文件→打开方式→Google Sheets,然后保存为Sheets格式,再用第一种脚本读取。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.18 18:03:24