Google Docs API в Google Apps Script как внешний API (НЕ как расширенный сервис) - PullRequest
0 голосов
/ 16 февраля 2019

Я пытаюсь использовать новый API Документов Google, используя Google Apps Script.Поскольку новый API еще не доступен как расширенный сервис, я пытаюсь сделать это с помощью UrlFetchApp (), но безуспешно.

Извинения за наивную попытку здесь:

function apiCall(){

var API_KEY = 'YOUR_API_KEY';
var username = 'YOUR_USERNAME';
var password = 'YOU_PASSWORD';

var DOC_ID = 'YOUR_DOC_ID';
var root = 'https://docs.googleapis.com/v1/documents/';
var endpoint = DOC_ID;
var query = '?key=' + API_KEY;

var params = {
 'method': 'GET',
 'muteHttpExceptions': true,
 'headers': {
    'Authorization': 'Basic ' + Utilities.base64Encode(username + ':' +      password)
  }
};

var response = UrlFetchApp.fetch(root + endpoint + query, params);
var data = response.getContentText();
var json = JSON.parse(data);

Logger.log(json);
}

Я получаюследующий ответ:

{error={code=401, message=Request is missing required authentication credential. Expected OAuth 2 access token, login cookie or another valid authentication credential. See https://developers.google.com/identity/sign-in/web/devconsole-project., status=UNAUTHENTICATED}}

Может кто-нибудь указать правильное направление, где я могу найти документацию по использованию Google Docs API в скрипте Google Apps.

1 Ответ

0 голосов
/ 16 февраля 2019

Если вы являетесь владельцем документа, вам не нужно использовать ключ API.Кроме того, вместо использования Basic аутентификации вы можете использовать встроенный токен Bearer OAuth следующим образом:

/**
 * Get `Document` resource object from Google Docs REST API.
 *
 * @param {String} docId - A Google Document Id
 *
 * @return {Document} A Document resource object. 
 */
function getDocumentResouce(docId) {
    return JSON.parse(UrlFetchApp.fetch(
            "https://docs.googleapis.com/v1/documents/" + docId,
            {
                "headers": {
                    "Authorization":"Bearer " + ScriptApp.getOAuthToken()
                }
            }  
        )
    );
}

Примечание: GET - это метод HTTP-запроса по умолчанию, используемый UrlFetchApp.fetch(), поэтомувам не нужно определять его в объекте параметров.


ADDENDUM

As Tanaike , указанный в комментариях, которые вынеобходимо вручную добавить соответствующие области (в дополнение к уже включенным) в манифест JSON.

Сначала проверьте свойства проекта, чтобы получить список существующих областей действия через меню File > Project Properties > Scopes.Вам необходимо добавить эти области, а также одну из соответствующих областей документа (, перечисленных в документации ) к вашему манифесту.

Следующие ссылки предоставляют информацию, которая необходима для управленияВаш манифест и области применения:

https://developers.google.com/apps-script/concepts/manifests

https://developers.google.com/apps-script/concepts/scopes

...