如何为脚本生成的Google Sheet副本设置「任何人可链接编辑」权限?
配置复制后的Google Sheet权限为“任何人可凭链接编辑”
要实现这个需求,只需在复制表格完成后,通过Google Apps Script的DriveApp服务为新生成的表格设置共享权限即可。以下是修改后的完整代码:
function duplicateAndEmailSheet() { var sourceSpreadsheetId = '*original file ID*'; var recipientEmail = '*My email*'; var today = new Date(); var dayOfWeek = today.getDay(); // 0 = 周日, 1 = 周一, ..., 5 = 周五, 6 = 周六 // 仅当不是周六时执行 if (dayOfWeek !== 6) { // 调整邮件主题中的日期为次日 var emailSubjectDate = new Date(today); emailSubjectDate.setDate(today.getDate() + 1); // 如果是周五,将日期设为下周日 if (dayOfWeek === 5) { emailSubjectDate.setDate(today.getDate() + (7 - today.getDay())); } var subject = 'subjectline ' + emailSubjectDate.toDateString(); var body = 'subjectline ' + emailSubjectDate.toDateString() + ': '; // 复制表格 var sourceSpreadsheet = SpreadsheetApp.openById(sourceSpreadsheetId); var newSpreadsheet = sourceSpreadsheet.copy('Duplicate as Template ' + emailSubjectDate.toDateString()); // 核心:设置新表格权限为任何人凭链接可编辑 var newDriveFile = DriveApp.getFileById(newSpreadsheet.getId()); newDriveFile.setSharing( DriveApp.Access.ANYONE_WITH_LINK, DriveApp.Permission.EDIT ); // 获取新表格链接并补充到邮件内容 var newSpreadsheetUrl = newSpreadsheet.getUrl(); body += newSpreadsheetUrl; // 发送邮件 MailApp.sendEmail(recipientEmail, subject, body); } } function createTriggers() { ScriptApp.newTrigger('duplicateAndEmailSheet') .timeBased() .everyDays(1) .atHour(6) // 设置为06:00执行 .nearMinute(30) .create(); }
关键代码说明
DriveApp.getFileById(newSpreadsheet.getId()):通过新表格的ID获取对应的Drive文件对象,表格权限由Drive服务统一管理,因此需要转换为Drive文件实例操作。setSharing(DriveApp.Access.ANYONE_WITH_LINK, DriveApp.Permission.EDIT):- 第一个参数指定访问范围为任何拥有链接的用户;
- 第二个参数赋予这些用户编辑权限。
注意事项
首次运行脚本时,系统会弹出授权请求,需允许脚本访问你的Google Drive和发送邮件权限,否则权限设置与邮件发送功能无法正常执行。
内容的提问来源于stack exchange,提问作者Zigi Ekron
相关产品推荐
相关产品推荐

