Развертывание как веб-приложение программно из редактора браузера Apps Script - PullRequest
2 голосов
/ 27 октября 2019

Я понимаю, что с помощью clasp мы можем развернуть скрипт программно (даже без входа в редактор скриптов приложений);однако мне было интересно, существуют ли подобные функции, позволяющие нам вызывать эти API непосредственно из редактора скриптов приложений.

Я обнаружил следующие ресурсы, которые помогают при развертывании с помощью запросов HTTP GET и POST -

  • projects.versions.create : перед развертыванием сценария необходимо иметь ненулевую версию
  • projects.deployments.create : Как только у нас появится новый номер версии, мы можем вызвать этот API для развертывания скрипта

К сожалению, я не смог найти никаких ссылок, кроме этого примера фрагмента, который мог бы помочь вызвать их вспособ, аналогичный тому, что / как мы делаем для других служб сценариев, например: SpreadsheetApp или ScriptApp или PropertiesService и т. д.

<script src="https://apis.google.com/js/api.js"></script>
<script>
  /**
   * Sample JavaScript code for script.projects.versions.create
   * See instructions for running APIs Explorer code samples locally:
   * https://developers.google.com/explorer-help/guides/code_samples#javascript
   */

  function authenticate() {
    return gapi.auth2.getAuthInstance()
        .signIn({scope: "https://www.googleapis.com/auth/script.projects"})
        .then(function() { console.log("Sign-in successful"); },
              function(err) { console.error("Error signing in", err); });
  }
  function loadClient() {
    gapi.client.setApiKey("YOUR_API_KEY");
    return gapi.client.load("https://content.googleapis.com/discovery/v1/apis/script/v1/rest")
        .then(function() { console.log("GAPI client loaded for API"); },
              function(err) { console.error("Error loading GAPI client for API", err); });
  }
  // Make sure the client is loaded and sign-in is complete before calling this method.
  function execute() {
    return gapi.client.script.projects.versions.create({
      "resource": {}
    })
        .then(function(response) {
                // Handle the results here (response.result has the parsed body).
                console.log("Response", response);
              },
              function(err) { console.error("Execute error", err); });
  }
  gapi.load("client:auth2", function() {
    gapi.auth2.init({client_id: "YOUR_CLIENT_ID"});
  });
</script>
<button onclick="authenticate().then(loadClient)">authorize and load</button>
<button onclick="execute()">execute</button>

Я понимаю, что выше приведен JavaScript и он не особенно полезен для скрипта приложений, но...

Попытка проверить, есть ли версия скрипта Apps (браузера) в gapi.client.script.projects.versions.create

1 Ответ

2 голосов
/ 27 октября 2019

Встроенная служба недоступна, но вы можете вызвать API скриптов приложений напрямую, используя URLFetchApp.

Для обработки авторизации вам необходимо привязать проект скрипта Apps к проекту GCP и включить API скриптов Apps (в проекте GCP).

Затем вы можете установить необходимые области OAuth в файле манифеста проекта скрипта приложения (appscript.json). Это позволит вам вызывать ScriptApp.getOAuthToken() и использовать полученное значение в качестве токена-носителя, который вы передаете в качестве заголовка аутентификации при совершении вызовов UrlFetchApp.fetch.

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