Вызов скрипта Google Apps из другого файла проекта - PullRequest
0 голосов
/ 11 января 2020

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

Ниже функция, которую я использую для вызова другого файла проекта

    function makeRequest() 
    {
      var webAppUrl = "https://script.google.com/macros/s/***/exec";

      var auth = ScriptApp.getOAuthToken();
      var header = { 'Authorization': 'Bearer ' +  auth };
      var options = { 'method':'post', 'headers':header };

      var resp = UrlFetchApp.fetch(webAppUrl, options);

      Logger.log(resp);
    }

Ниже приведена функция, которую я пытаюсь вызвать. Кроме того, я запустил функцию authorizeDrive и опубликовал ее в виде веб-приложения.

    function authorizeDrive()
    {
      var forScope = DriveApp.getRootFolder();
    }

    function doPost()
    {  
      var ss = SpreadsheetApp.openById('ssID');
      var name = ss.getName();
      Logger.log('called');
      return ContentService.createTextOutput(name);
    }

1 Ответ

2 голосов
/ 11 января 2020
  • Вы хотите запустить скрипт Google Apps в проекте GAS A, получив доступ к веб-приложениям из проекта GAS B.
  • В вашем случае, веб-приложения развертываются Who has access to the app: из Only myself или Anyone.
    • Вы хотите получить доступ к веб-приложениям с помощью токена доступа.
  • Проекты GAS A и B находятся в вашем Google Диске.

Если мое понимание верно, как насчет этого ответа? Пожалуйста, подумайте об этом как об одном из нескольких возможных ответов.

Я думаю, что в вашем случае необходимо добавить область действия к проекту, включая makeRequest(). Итак, чтобы добавить область доступа к веб-приложениям с помощью токена доступа, как насчет следующей модификации?

Модифицированный скрипт:

function makeRequest() 
{
  var webAppUrl = "https://script.google.com/macros/s/***/exec";

  var auth = ScriptApp.getOAuthToken();
  var header = { 'Authorization': 'Bearer ' +  auth };
  var options = { 'method':'post', 'headers':header };

  var resp = UrlFetchApp.fetch(webAppUrl, options);

  Logger.log(resp);
}

// DriveApp.getFiles() // This comment line is used for automatically detecting the scope.
  • Пожалуйста, добавьте // DriveApp.getFiles() строки комментария. Эта строка комментария используется для автоматического определения области.
  • В этом случае к областям добавляется https://www.googleapis.com/auth/drive.readonly. Если это не помогло решить проблему, добавьте строку комментария // DriveApp.createFile(blob). В этом случае добавляется https://www.googleapis.com/auth/drive.

Примечание:

  • При изменении сценария на стороне веб-приложений повторно разверните его как новую версию. Таким образом, последний скрипт отражается на веб-приложениях. Пожалуйста, будьте осторожны.
  • Если владельцем проекта GAS для веб-приложений является не ваша учетная запись со сценарием makeRequest(), сначала, пожалуйста, поделитесь файлом проекта GAS для веб-приложений со своей учетной записью. Тогда, пожалуйста, проверьте это. Эта спецификация была добавлена ​​11 апреля 2018 года. Также, пожалуйста, будьте осторожны с этим.

Ссылки:

Если я неправильно понял ваш вопрос, и это был не тот результат, который вам нужен, я приношу свои извинения.

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