首页 > 解决方案 > 使用 Apps 脚本替换 Google 表格,同时保持相同的文件 ID

问题描述

我正在使用 File Stream 将两个 csv 文件从 SQL 服务器导出到 Google Drive 文件夹,然后我需要将其数据拉入 Google 表格(无需将共享设置设置为公开)。

我想到的过程是:

  1. 将 CSV 导出到文件流(F1.csv 和 F2.csv) -工作
  2. 使用应用脚本(F1.gheet 和 F2.gsheet)将 CSV 文件转换为 Google 表格-工作
  3. 在我的主 Google 工作表(Tool.gheet)中使用=IMPORTRANGEF1.gsheet 和 F2.gheet导入到该工作簿中他们自己的工作表中

我遇到的问题是这两个 csv 文件将每天导出和上传。我可以很好地转换它们,但它们会获得新的文件 ID,这会破坏第 3 步。

我想要做的是用新的 F1.csv 和 F2.csv 的内容替换F1.gsheet和 F2.gsheet,以便它们的文件 ID 保持不变并且Tool.gsheet提取新数据。

我已经查看了如何将上传的 CSV 或 XLS 文件中的数据自动导入 Google 表格,但它非常慢,我只需要能够使用类似于 Google 文件修订功能的东西,但使用 Google Apps 脚本。

任何帮助将不胜感激!

标签: google-apps-scriptgoogle-sheets

解决方案


您不能将旧工作表的 ID 分配给新工作表,但可以使用索引来代替

样本:

function moveSheet() {
  var ss =  SpreadsheetApp.getActive();
  var newSheet = SpreadsheetApp.getActive().insertSheet();
  var desiredIndex = 1
  ss.setActiveSheet(newSheet);
  ss.moveActiveSheet(desiredIndex);
  ss.getSheets()[desiredIndex].getName();
  Logger.log(newSheet.getName()+ "is the same as "+  ss.getSheets()[desiredIndex].getName());
}

推荐阅读