Изменение разрешения на доступ к файлам диска с ошибкой Drive.Permissions.insert - PullRequest
0 голосов
/ 05 февраля 2020

У меня есть триггер, который запускается при отправке формы 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
       });

Полученная ошибка:

Вызов API для drive.permissions.insert завершился ошибкой: аутентифицированный пользователь не предоставил приложению 280983214043111 доступ на запись в файл 1GI0psQysSE9xuzs3W3vNs99qcCFSUUsF4T в onSubmitter (триггер: 48) **

С момента появления приложения я думал запускается под моей учетной записью, и у меня есть доступ к файлам, которые будут иметь необходимые разрешения. Я предполагаю, не учитывая, что он вызывается триггером?

Есть идеи, как я могу дать своему приложению возможность записи на все файлы на моем диске? Я могу запустить этот код напрямую, и он работает, но не при вызове триггером.

1 Ответ

0 голосов
/ 05 февраля 2020

Я не уверен, как вы создаете файл, но следующий код работает для меня без ошибок при отправке формы:


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'
   });
}

Если этот код также работает для вас, но ваш собственный код не работает - Пожалуйста, предоставьте оставшуюся часть кода для устранения неполадок.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...