以编程方式连接两个电子表格,因此您无需手动授权即可进行导入

时间:2019-06-15 04:28:45

标签: google-apps-script google-sheets gsuite importrange

首先,这是针对Enterprise G-Suite的。在工作域之外的共享/发布被禁用。

这是我的设置:

  1. 模板电子表格位于团队驱动器1上的文件夹中
  2. 目标驱动器1中的文件夹中的目标电子表格
  3. 团队驱动器2上的目标文件夹

我有一个脚本,

  1. 复制#1至#3
  2. 在#2中添加一个IMPORTRANGE函数,以从在#3中创建的新文件中提取数据

现在,当我进入#2时,我看到导入范围功能出现错误,我必须授权图纸:“您需要连接这些图纸。”。下面是屏幕截图:

enter image description here

如果我单击“允许访问”,它将起作用,并且确实会从新复制的文件中提取数据。

我想知道的是,是否有一种方法可以以编程方式在我的代码中授权访问,因此我不必打开#2并手动授权?

var sFileID = "ID of template Spreadsheet in a folder on team drive 1";
var dFileID = "ID destination Spreadsheet in a folder on team drive 1";
var dFolderID = "ID of destination folder on a team drive 2";

// get the 2 files and the folder
var sFile = DriveApp.getFileById(sFileID);
var dFile = DriveApp.getFileById(dFileID);
var dFolder = DriveApp.getFolderById(dFolderID);

// copy the template file to the destination folder
var nFile = sFile.makeCopy("test", dFolder);

// open the destination spreadsheet
var dss = SpreadsheetApp.openById(dFileID);

// get the sheet
var ds = dss.getSheetByName("Sheet1");

// append a new row with the IMPORTRANGE function pulling from the new file
ds.appendRow(['=IMPORTRANGE("' + nFile.getId() + '", "Sheet1!A2:D2")']);

SpreadsheetApp.flush();

1 个答案:

答案 0 :(得分:1)

无法自动授权IMPORTRANGE。 Google Apps脚本或Google Sheets API都有执行此操作的方法。

根据this answer,一种选择是与具有链接的任何人共享源电子表格。

相关