Проблемы с пониманием того, как реализовать API Google Sheets

Я все еще изучаю веб-разработчик, следовательно, мой любительский язык, но мне действительно нужно иметь возможность извлекать некоторые данные из листа Google и визуально представлять их в виде холста с анимированным Javascript-объектом.

К сожалению, как обычно, документация Google Sheets API написана не для таких людей, как я! Базовое приложение GETer отлично работало на моем локальном сервере Python, но теперь выдает ошибку, поскольку я тестировал его на размещенном веб-сайте. Я предполагаю, что это проблема JSONP, так как ошибка начинается с "Загрузка запрещена X-Frame-Options", но в документации нет никаких упоминаний о том, как сделать запрос как JSONP. Я сделал эту таблицу общедоступной, поэтому не нужно выполнять этап аутентификации.

Вот код с удаленными идентификаторами и т. Д.:

 <script>         

      var CLIENT_ID = 'my_client_id';

      var SCOPES = ["https://www.googleapis.com/auth/spreadsheets.readonly"];

            function checkAuth() {
        gapi.auth.authorize(
          {
            'client_id': CLIENT_ID,
            'scope': SCOPES.join(' '),
            'immediate': true
          }, handleAuthResult);
      }

 /**
       * Handle response from authorization server.
       *
       * @param {Object} authResult Authorization result.
       */
      function handleAuthResult(authResult) {

        if (authResult && !authResult.error) {
          // Hide auth UI, then load client library.

          loadSheetsApi();
        } else {
          // Show auth UI, allowing the user to initiate authorization by
          // clicking authorize button.
    console.log('nope');
        }
      }

      /**

      /**
       * Load Sheets API client library.
       */
      function loadSheetsApi() {
        var discoveryUrl =
            'https://sheets.googleapis.com/$discovery/rest?version=v4';
        gapi.client.load(discoveryUrl).then(trackDonations);
      }

      /**
       * Print values in the donations column
       */
      function trackDonations() {
        gapi.client.sheets.spreadsheets.values.get({
          spreadsheetId: 'my_sheet_id',
          range: 'Form Responses 1!C2:C',
        }).then(function(response) {
          var range = response.result;
          if (range.values.length > 0) {
              console.log(range.values);
            $('.sum').text(range.values[range.values.length-1]);
          } else {
            prompt('No data found.');
          }
        }, function(response) {
          prompt('Error: ' + response.result.error.message);
        });
      }



    </script>
    <script src="https://apis.google.com/js/client.js?onload=checkAuth">

Возможно, я упускаю что-то глупое, но буду очень признателен за руководство! Спасибо!

1 ответ

Если вы работаете с электронной таблицей, может быть проще использовать AppsScript.

Из таблицы перейдите в Инструменты> Редактор скриптов. На этой странице показано, как загрузить данные в массив https://developers.google.com/apps-script/reference/spreadsheet/spreadsheet и затем использовать его в качестве jsonp https://developers.google.com/apps-script/guide/content Если вы затем "Развернуть как веб-приложение" (значок облака), они дадут вам ссылку для ссылки в вашем коде.

Это похоже на использование остальных API, но дает вам больше контроля над тем, как работает ответ.

Другие вопросы по тегам