Google apps script 通过高级驱动器服务添加编辑器(),无需通知电子邮件
我的代码处理用户提交的谷歌表单数据并将其合并到谷歌文档中,与通过谷歌表单功能确定的用户共享该文件,并通过电子邮件向这些用户发送新提交的通知 用户组以单个值开始(单元格中的列表--Google apps script 通过高级驱动器服务添加编辑器(),无需通知电子邮件,google-apps-script,google-api,google-drive-api,Google Apps Script,Google Api,Google Drive Api,我的代码处理用户提交的谷歌表单数据并将其合并到谷歌文档中,与通过谷歌表单功能确定的用户共享该文件,并通过电子邮件向这些用户发送新提交的通知 用户组以单个值开始(单元格中的列表--user1@email.com, user2@email.com,然后将拆分(“,”为一个数组,用于加法器() 使用DriveApp方法时,我需要为这些用户设置编辑权限,而不发送与该操作相关联的电子邮件通知。据我所知,这需要的是,我已经为脚本准备好了 在没有通知的情况下添加这些权限的语法和确切代码是什么 下面是我的代码示
user1@email.com, user2@email.com,然后将拆分(“,”
为一个数组,用于加法器()
使用DriveApp方法时,我需要为这些用户设置编辑权限,而不发送与该操作相关联的电子邮件通知。据我所知,这需要的是,我已经为脚本准备好了
在没有通知的情况下添加这些权限的语法和确切代码是什么
下面是我的代码示例--
这里有一个实用程序函数,用于以静默方式授予用户对Google驱动器文件的写入权限
/**
*将给定用户的写入权限添加到给定文档。
*
*使用必须启用的高级驱动器服务。
*
*发件人:http://stackoverflow.com/a/37289790/1677912
*
*@param{string}docId要添加权限的文档ID。
*@param{string}userEmail要授予编辑权限的用户的电子邮件地址。
*/
函数addEditorSilent(docId、userEmail){
var permissionResource={
角色:'作者',
键入:“用户”,
值:userEmail
};
变量optionalArgs={
sendNotificationEmails:false
};
Drive.Permissions.insert(permissionResource、docId、optionalArgs);
}
现在,不是:
var docCopy=docToUse.makeCopy(docName,folderDestination);
var docId=docCopy.getId();
var docToSend=DriveApp.getFileById(docId);
docToSend.addEditors(emailEditors);
使用:
var docCopy=docToUse.makeCopy(docName,folderDestination);
var docId=docCopy.getId();
对于(var i=0;i此代码除了分配权限之外还能做什么?在测试运行期间,创建了两个Google文档副本。有什么建议吗?我的测试是在我自己的代码中完成的,显然没有您的可运行版本,这在问题中是不完整的。但是,请查找对makeCopy()的多个调用
。谢谢,如果继续发生,我也会做一些console.log()
测试。将电子邮件组添加到权限列表是否会添加该组的所有成员?console.log()
是客户端的;您的代码是服务器端的,因此这对您没有帮助。(Logger.log()
)我认为组在访问文件时检查成员身份,而不是授予权限时。这样,从组中删除用户会自动删除他们对与组共享的文件资源的权限。啊,是的,我的意思是Logger.log
,谢谢。我会对组做更多的研究。我有个人需要请求访问,即使该组已获得许可。
function mergeApplication() {
var ss = SpreadsheetApp.getActiveSpreadsheet();
var sheet = ss.getSheetByName("Merge Data");
var range = sheet.getActiveRange();
var formSheet = ss.getSheetByName("Form Responses");
var lastRow = formSheet.getLastRow();
var lastColumn = sheet.getMaxColumns();
function checkAndComplete() {
var urlColumn = lastColumn;
var checkColumn = (urlColumn - 1);
var checkRange = sheet.getRange(2, checkColumn, (lastRow - 1), 1);
var check = checkRange.getBackgrounds();
var red = "#ff0404";
var yellow = "#ffec0a";
var green = "#3bec3b";
for (var i = 0; i < check.length; i++) {
if (check[i] == green) {
continue;
} else {
var statusCell = sheet.getRange((i+2), checkColumn, 1, 1);
var urlCell = sheet.getRange((i+2), urlColumn, 1, 1);
var dataRow = sheet.getRange((i+2), 1, 1, (lastColumn - 2));
var emailTag = sheet.getRange((i+2), (checkColumn - 2)).getValue();
var emailEditors = emailTag.split(", ");
var docCopy = docToUse.makeCopy(docName, folderDestination);
var docId = docCopy.getId();
var docToSend = DriveApp.getFileById(docId);
docToSend.addEditors(emailEditors);