When you enter an importrange function manually into a spreadsheet you receive a pop up and must 'allow access'.
但是,我正在尝试找到一种通过脚本来执行此操作的方法,因为我正在创建许多电子表格,每个电子表格都有一个查询导入范围函数(我“拥有”有要导入的数据的电子表格)。对我来说,有太多的问题无法通过弹出窗口手动“允许访问”并更新功能以包含查询功能。
因此,我正在寻找应用程序脚本中的函数调用,该函数调用可以执行与弹出窗口相同的操作。下面的代码段示例。
有谁知道可以“允许访问”的功能吗?
斯特凡
// create new spreadsheet file
...
var ss = createSpreadsheet(fileName);
var spreadsheet = SpreadsheetApp.open(ss);
var sheet = spreadsheet.getSheetByName("Sheet1");
// Add student as Viewer
spreadsheet.addViewer(studentEmail);
// Add ImportRange function
var sheet = spreadsheet.getSheets()[0];
var cell = sheet.getRange("A1");
var filter = "select * where Col3='" + studentEmail + "'";
var qry = '=QUERY(importRange("' + fileKey + '","14-15S2!A1:AE");"' + filter + '";1)';
cell.setValue(qry);
// I need a function to 'allow access' here, so the function can be allowed access. Otherwise, it throws an error.
...
@Franzi 建议使用有效的未记录方法 and 不需要公开捐助者/来源电子表格。以下是您可以通过 Google App 脚本执行此操作的方法:
function addImportrangePermission() {
// id of the spreadsheet to add permission to import
const ssId = SpreadsheetApp.getActiveSpreadsheet().getId();
// donor or source spreadsheet id, you should get it somewhere
const donorId = '1GrELZHlEKu_QbBVqv...';
// adding permission by fetching this url
const url = `https://docs.google.com/spreadsheets/d/${ssId}/externaldata/addimportrangepermissions?donorDocId=${donorId}`;
const token = ScriptApp.getOAuthToken();
const params = {
method: 'post',
headers: {
Authorization: 'Bearer ' + token,
},
muteHttpExceptions: true
};
UrlFetchApp.fetch(url, params);
}
通常不需要,但在极少数情况下,您可能需要添加所需的 oauthScopesappscript.json
显现:
...,
"oauthScopes": [
"https://www.googleapis.com/auth/spreadsheets",
"https://www.googleapis.com/auth/script.external_request"
],
...
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)