修改云端硬盘文件权限并显示 Drive.Permissions.insert 错误



我有一个触发器,在提交Google表单时执行。提交表单后,它会创建一个文档。我希望触发器脚本添加一个用户以便能够查看该文件。

我的代码:

function onSubmitter(e){
var user = e.namedValues['Shareholder Name:'][0];
var email = e.namedValues['Shareholder Email:'][0];
var proxy1 = e.namedValues['1ST PROXY NOMINEE:'][0];  
var proxy2 = e.namedValues['2ND PROXY NOMINEE:'][0];
var attendance = e.namedValues['ATTENDANCE:'][0];
var arrival = e.namedValues['ARRIVAL DATE:'][0];
var departure = e.namedValues['DEPARTURE DATE:'][0];
var certification = e.namedValues['CERTIFICATION:'][0];
var electronicsignature = e.namedValues['ELECTRONIC SIGNATURE:'][0];
var rowstart = e.range.getRow();
var app = SpreadsheetApp;
var activeSheet = app.getActiveSpreadsheet().getActiveSheet()
var pdflink = activeSheet.getRange(rowstart, 14).getValue();
var fileID = pdflink.toString().replace("https://drive.google.com/a/xxxxxx/file/d/", "");
fileID = fileID.toString().replace("/view?usp=drivesdk", "");

var id = DriveApp.getFileById(fileID);
var idtwo = id.getId();
Drive.Permissions.insert(
{
'role': 'reader',
'type': 'user',
'value': email
},
idtwo,
{
'sendNotificationEmails': 'false'
});
var templ = HtmlService.createTemplateFromFile('email_proxy');
templ.shareholderAccount = user;
templ.shareholderLink = pdflink;
templ.shareholderFriendlyName = user;
var message = templ.evaluate().getContent();
GmailApp.sendEmail(email, 'Proxy Confirmation', '',{
htmlBody: message
});

我得到的错误:

对 drive.permissions.insert 的 API 调用失败,出现错误:经过身份验证的用户尚未授予应用对文件 1GI0psQysSE9xuzs3W3vNs99qcCFSUUsF4T 280983214043111写入访问权限 在提交者(触发器:48(**

我认为由于该应用程序在我的用户帐户下运行并且我可以访问这些文件,因此它将具有正确的权限。 我猜不是因为它是由触发器调用的?

知道我如何让我的应用对云端硬盘中的所有文件具有写入权限吗? 我可以直接运行此代码并且它有效,只是在触发器调用时不起作用。

我不确定您如何创建文件,但以下代码对我有用,在表单提交时没有错误:


function myFunction() {
var file = DriveApp.createFile("name", "content");
var email = "foo@gmail.com";
var fileID=file.getId();
Drive.Permissions.insert(
{
'role': 'reader',
'type': 'user',
'value': email
},
fileID,
{
'sendNotificationEmails': 'false'
});
}

如果此代码也适合您,但您自己的代码不起作用 - 请提供其余代码以进行故障排除。

最新更新