[英]Google App Script: Share spreadsheets in Column 1, with Users in Column 2
在脚本运行时,授予对所有电子邮件(B 列)、所有电子表格(A 列)的查看访问权限
工作表网址 | 电子邮件 |
---|---|
https://docs.google.com/spreadsheets/d/1 | Bob@email.com |
https://docs.google.com/spreadsheets/d/2 | 约翰@email.com |
function setSheetPermissions(){
//Spreadsheet that contains the Spreadsheet URL's & Emails.
var ss= SpreadsheetApp.openById('spreadsheetID')
// Sheet name that contains the URL's & Emails
var sheet = ss.getSheetByName("Sheet1")
// Get the values of all the URL's in column A
var getSheetURLs = sheet.getRange("A2:A50").getValues();
// Get the values of all the emails in column B
var getEmails = sheet.getRange("B2:B50").getValues();
for ( i in getEmails)
getSheetURLs.addViewer(getEmails[i][0])
}
getSheetIDs.addViewer 不是 function(第 26 行,文件“代码”)
第 26 行: getSheetURLs.addViewer(getEmails[i][0])
我究竟做错了什么?
getSheetURLs
是一个二维数组。 在这种情况下,不能直接使用addViewer
方法。 我认为这是您的错误消息的原因。当这些点反映在你的脚本中时,它变成如下。
// Get the values of all the URL's in column A
var getSheetURLs = sheet.getRange("A2:A50").getValues();
// Get the values of all the emails in column B
var getEmails = sheet.getRange("B2:B50").getValues();
for ( i in getEmails)
getSheetURLs.addViewer(getEmails[i][0])
var values = sheet.getRange("A2:B" + sheet.getLastRow()).getValues();
values.forEach(([sheetUrl, email]) => {
if (sheetUrl && email) SpreadsheetApp.openByUrl(sheetUrl + "/edit").addViewer(email);
});
从您显示的示例电子表格中,我了解到您的电子表格 URL 就像https://docs.google.com/spreadsheets/d/###
。 在这种情况下,不能直接使用openByUrl
。 所以我添加了/edit
。 如果您显示的电子表格 URL 与示例电子表格不同,请提供您的示例电子表格 URL。 通过这个,我想修改脚本。
如果您的实际电子表格 URL 都是https://docs.google.com/spreadsheets/d/###
和https://docs.google.com/spreadsheets/d/###/edit
,您还可以使用SpreadsheetApp.openByUrl(sheetUrl + (sheetUrl.includes("/edit")? "": "/edit")).addViewer(email)
。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.