Получить JSON объект из GAS WebApp из другой разработки GAS WebApp? - PullRequest
0 голосов
/ 24 апреля 2020

У меня есть два разных проекта GAS Script1 и Script2.

Script1: Это проект разработки с функцией doPost(). Для этого он использует e.parameter или e.postData.contents.

Script2: Это тестовый скрипт. Он также имеет функцию doPost(). Я хочу передать doPost() e.parameter в Script1 по запросу. Но URLFetchApp успешно работает, когда я использую Текущий URL-адрес веб-приложения и заканчивается /exec. Но я хочу использовать последний код и заканчивается /dev. Поскольку Script1 является проектом разработки, и я не могу обновить его версию для небольшого изменения.

Я попробовал этот код. Не работает

function myFunction() {
  //var URL = "https://script.google.com/macros/s/xxxxxxxxxxxxxxxxxxxxxxxxxxx/exec";
  var URL = "https://script.google.com/macros/s/xxxxxxxxxxxxxxxxxxxxxxxxxxxx/dev";
  var data = {
      'message' : "This is working"
    }
  var options = {
    'method' : 'post',
    'contentType': 'application/json',
    'payload' : JSON.stringify(data)
  };

  var response = UrlFetchApp.fetch(URL, options);
}

1 Ответ

1 голос
/ 24 апреля 2020

Я считаю, что ваша цель заключается в следующем.

  • Вы хотите получить доступ к веб-приложениям в режиме разработки с помощью скрипта Google Apps.

Для этого, как насчет этого? ответ?

Точки модификации:

  • Для доступа к веб-приложениям в режиме dev используйте токен доступа. И в этом примере область действия https://www.googleapis.com/auth/drive.readonly используется для токена доступа.

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

Когда ваш скрипт изменяется, пожалуйста, измените его следующим образом.

function myFunction() {
  //var URL = "https://script.google.com/macros/s/xxxxxxxxxxxxxxxxxxxxxxxxxxx/exec";
  var URL = "https://script.google.com/macros/s/xxxxxxxxxxxxxxxxxxxxxxxxxxxx/dev";
  var data = {
      'message' : "This is working"
    }
  var options = {
    'method' : 'post',
    'contentType': 'application/json',
    'payload' : JSON.stringify(data),
    'headers': {'authorization': 'Bearer ' + ScriptApp.getOAuthToken()} // Added
  };

  var response = UrlFetchApp.fetch(URL, options);
}

// DriveApp.getFiles()  // Added

Примечание:

  • Строка комментария // DriveApp.getFiles() используется для автоматического определения области действия https://www.googleapis.com/auth/drive.readonly редактором сценариев.
  • Когда токен доступа используется, даже если Who has access to the app: равен Only myself, скрипт работает.

Ссылки:

...