google-apps-script - 以编程方式连接两个电子表格,因此您无需手动授权即可导入
问题描述
首先,这是针对 Enterprise G-Suite。禁止在工作域之外共享/发布。
这是我的设置:
- 团队驱动器 1 上文件夹中的模板电子表格
- 团队驱动器 1 上文件夹中的目标电子表格
- 团队驱动器 2 上的目标文件夹
我有一个脚本:
- 复印 #1 到 #3
- 向#2添加一个
IMPORTRANGE
函数,从#3 中创建的新文件中提取数据
现在,当我进入 #2 时,我看到导入范围函数出现错误,我必须授权工作表:“您需要连接这些工作表。”。下面是截图:
如果我单击“允许访问”,它会起作用并从新复制的文件中提取数据。
我想知道是否有办法在我的代码中以编程方式授权访问,这样我就不必打开#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();
解决方案
无法自动授权 IMPORTRANGE。Google Apps Script 或者 Google Sheets API 都有一个方法可以做到这一点。
根据这个答案,一种替代方法是与任何知道链接的人共享源电子表格。
有关的
推荐阅读
- asp.net-core - .resx 文件在 .cs 文件中使用时为空
- python - 根据单元格中的其他文本选择单元格中的链接文本
- debugging - 本地部署到 Intellij Tomcat 的 GWT 应用程序在支持 gwt 的客户端模块中看不到断点
- haskell - 身份解析器
- c# - 如何将网格动态添加到网格中
- django - 返回重定向后如何执行操作?
- node.js - (Flutter) Paytm 支付网关集成
- php - 连接到本地 mySQL 数据库时的特殊 PHP 行为
- java - Listview按钮单击引发空指针异常
- javascript - javascript按字符串数组对对象数组进行排序