Публикация аддона скрипта приложения Sheets, но все действия выполняются в контейнере - PullRequest
0 голосов
/ 21 февраля 2019

Я разработал аддон, состоящий из:

  • скрипта приложений, привязанного к электронной таблице
  • внешнего веб-интерфейса, который вызывает некоторую функцию скрипта приложений благодаря API скриптов приложений.

Вот пример моего кода:

1) в моем внешнем веб-интерфейсе я делаю что-то вроде:

window.gapi.client.script.scripts.run({
    scriptId: 'myscripID',
    resource: {
      function: addWorksheet,
      parameters: [
        'worksheetName'
      ],
      devMode: false
    } 
    ....

2) И в моем приложении ScriptУ меня есть функция:

function addWorksheet(worksheetName) {
  var ss = SpreadsheetApp.getActiveSpreadsheet();
  var newSheet = ss.insertSheet(0);
  ss.setActiveSheet(ss.getSheetByName(newSheet.getName()));
  newSheet.setName(worksheetName);
  return(newSheet.getName());
}

Описание проблемы: Проблема заключается в том, что я проверяю свою надстройку из меню «Выполнить-> Проверить как надстройку ...», вкл.Сценарии, связанные с контейнером, работают хорошо. => Новый лист хорошо создан.

Но если я проверю его на другом Google Sheets, новый лист будет создан в скриптах, связанных с контейнером, но не вактивные Google Sheets.

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

@ type: "type.googleapis.com / google.apps.script.v1.ExecutionError "errorMessage:" Вы делаетеУ вас нет прав доступа к запрошенному документу. "errorType:" ScriptError "

Помощь будет принята с благодарностью!

1 Ответ

0 голосов
/ 05 марта 2019

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

SpreadsheetApp.openById("spreadsheet ID")

вместо

SpreadsheetApp.getActiveSpreadsheet()
...