我有一个触发器,该触发器在提交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调用失败,并出现错误:经过身份验证的用户未授予应用280983214043111对文件1GI0psQysSE9xuzs3W3vNs99qcCFSUUsF4T的写访问权限在onSubmitter(Trigger:48)**
我认为,由于该应用程序以我的用户帐户运行,并且我有权访问该文件,因此该文件具有正确的权限。我猜是否没有被触发器调用?
任何想法,我如何赋予我的应用程序对云端硬盘中所有文件的写权限?我可以直接运行此代码,并且它可以工作,只是不能被触发器调用。
function myFunction() {
var file = DriveApp.createFile("name", "content");
var email = "[email protected]";
var fileID=file.getId();
Drive.Permissions.insert(
{
'role': 'reader',
'type': 'user',
'value': email
},
fileID,
{
'sendNotificationEmails': 'false'
});
}
如果此代码也对您有用,但您自己的代码不起作用-请提供其余代码以进行故障排除。