设置使用 Google App Script 创建的新幻灯片的权限

Posted

技术标签:

【中文标题】设置使用 Google App Script 创建的新幻灯片的权限【英文标题】:Setting the privileges of a new slide created using Google App Script 【发布时间】:2020-08-19 07:39:18 【问题描述】:

我使用 Google App 脚本创建了一张新幻灯片

var targetDocument = SlidesApp.create("New Doc");
  var targetDocumentUrl = targetDocument.getUrl();

在对 targetDocument 进行一些修改(所有这些都有效)之后,我想使用该脚本将 targetDocumentUrl 通过电子邮件发送给特定的人

function sendEmail(recipient,subject,fileUrl)
  var file = DriveApp.getFileById(getIdFromUrl(fileUrl));
  GmailApp.sendEmail(recipient, subject, 'Here is the file' + fileUrl + ' body of message', 
     attachments: [file.getAs(MimeType.PDF)],name: 'Auto Emailer'
 );  

虽然电子邮件正常发送,但 URL 不是公共 URL。如何确保任何收件人都可以访问该网址? 在 google app 脚本上没有找到访问权限的任何属性。

【问题讨论】:

【参考方案1】:

解决方案:

要创建特定文件的公开共享链接,您可以执行以下操作:

function createSlide() 
  
  const name = "New Doc" 
  const targetDocument = SlidesApp.create(name);
  const targetDocumentUrl = targetDocument.getUrl();
  const file = DriveApp.getFileById(targetDocument.getId());

//file.setSharing(DriveApp.Access.ANYONE_WITH_LINK, DriveApp.Permission.EDIT);
file.setSharing(DriveApp.Access.DOMAIN_WITH_LINK, DriveApp.Permission.EDIT);  
  

如果您来自 G Suite 帐户,请使用:

file.setSharing(DriveApp.Access.DOMAIN_WITH_LINK, DriveApp.Permission.EDIT);

否则你应该可以使用:

file.setSharing(DriveApp.Access.ANYONE_WITH_LINK, DriveApp.Permission.EDIT);

要求:

别忘了激活 Drive API:Resouces => Google 高级服务:启用 Drive API

参考资料:

Enum Access

【讨论】:

以上是关于设置使用 Google App Script 创建的新幻灯片的权限的主要内容,如果未能解决你的问题,请参考以下文章

如何从 Google OAuth 2.0 Playground 运行 Google App Script 功能 |调用者没有权限

Google App Script Regex exec() 仅在一个函数中返回 null

将cURL与PHP文件中的Google Apps Script Web App一起使用时遇到问题

Google App Script Web App GET 和 POST 请求被 CORS 策略阻止

在 Google App Script 中访问 ga_sessions_*

在Google App Script中使用导入的模块