使用IMPORTRANGE导入Google Drive中Excel文件失败,求解决方案
解决Google Sheets中无法用IMPORTRANGE导入Excel文件的问题
你说得没错,IMPORTRANGE确实只支持Google Sheets格式的电子表格,这就是Excel文件导入时出现#REF!错误的核心原因——它完全没法识别Drive里的Excel文件,和你调整的权限设置(哪怕转移所有权后)没有关系,权限问题只会在Google Sheets文件导入时出现授权提示,而不是直接提示“无法找到电子表格”。
优先推荐:公式类解决方案
方案1:将Excel文件转换为Google Sheets(最稳定)
这是最贴合你原有使用习惯的方案,步骤很简单:
- 在Google Drive中找到目标Excel文件,右键选择「打开方式」→「Google Sheets」
- 系统会自动生成一个对应的Google Sheets副本,你可以把这个副本保存到指定文件夹
- 然后直接用你熟悉的
=IMPORTRANGE("google-sheets-id","A:AR")公式导入即可,完全兼容原有的操作逻辑,还能实时同步源文件的变更。
方案2:用IMPORTDATA导入(无需转换格式,但无法实时同步)
如果你不想转换文件格式,可以把Excel文件导出为CSV格式后用IMPORTDATA导入:
- 打开Excel文件(本地或用Google Sheets打开),将其导出为CSV格式
- 将CSV文件上传到Google Drive,设置共享权限为「知道链接的人可查看」
- 获取CSV文件的直接下载链接(将Drive链接中的
open?替换为uc?export=download&) - 使用公式:
=IMPORTDATA("csv-direct-download-url")
注意:这个方案无法实时同步源Excel文件的更新,每次源文件修改后都需要重新导出并替换Drive里的CSV文件。
备选:Google Apps Script脚本方案(适合自动同步场景)
如果需要自动同步Excel文件内容,不需要手动转换格式,可以用Google Apps Script实现:
- 打开目标Google Sheets,点击「扩展程序」→「Apps脚本」
- 替换默认代码为以下脚本:
function importExcelFromDrive() { // 替换为你的Excel文件ID const excelFileId = "your-excel-file-id"; // 替换为目标工作表名称 const targetSheetName = "Sheet1"; // 获取Excel文件并读取数据 const tempSpreadsheet = SpreadsheetApp.openById(excelFileId); const sourceSheet = tempSpreadsheet.getActiveSheet(); const sourceData = sourceSheet.getDataRange().getValues(); // 写入目标工作表 const targetSheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName(targetSheetName); targetSheet.clearContents(); targetSheet.getRange(1, 1, sourceData.length, sourceData[0].length).setValues(sourceData); }
- 点击运行按钮,首次运行需要授权脚本访问Drive和Sheets的权限
- 你还可以设置触发器(点击脚本编辑器左侧的「触发器」图标),让脚本定期自动同步Excel文件的内容,实现实时更新的效果。
内容的提问来源于stack exchange,提问作者Baddie
相关产品推荐
相关产品推荐

