Как скачать / загрузить JSON-представление документа Google?

Можно ли загружать, изменять и выгружать JSON-представление документа Google через API?

Я пытаюсь написать для этого приложение на стороне сервера. Под документом Google я подразумеваю файлы, лежащие в основе функций редактирования форматированного текста согласно https://docs.google.com.

Насколько я понял, RealTime API должен позволять мне загружать json-представление документа с помощью запроса GET и загружать новый файл JSON с запросом PUT. Из документации это звучит идеально. Однако ответы на запросы GET содержат null в поле данных. Я понимаю, что это потому, что мое приложение OAuth2.0 не то же приложение, которое создало документ. Я не уверен, смогу ли я это исправить, если хочу, чтобы файлы обрабатывались так же, как и любой другой документ Google (как определено выше).

Drive API позволяет мне загружать файл с помощью запроса GET, однако поддерживаемые типы mime не включают JSON. Я знаю, что могу попытаться преобразовать их (например, с помощью библиотеки, подобной отличному pandoc), но для этого потребуется обработка с потерями и непредсказуемость, чтобы попытаться угадать, каким может быть представление документа Google, например, парсинг документов MS Word (ew).

Есть ли способ напрямую импортировать и экспортировать документы в собственном JSON-представлении Google?


person computer_guy    schedule 01.12.2016    source источник


Ответы (1)


Вы можете попробовать использовать Realtime API в режим без аутентификации, называемый режимом в памяти , который позволяет начать работу с API без какой-либо конфигурации или входа в систему.

Чтобы создать приложение без аутентификации, вы можете посетить и попробовать действия, описанные в Google Realtime API Быстрый старт. Вы можете просто скопировать следующий код в новый файл, а затем открыть его в браузере.

<!DOCTYPE html>
<html>
  <head>
    <title>Google Realtime Quickstart</title>

    <!-- Load Styles -->
    <link href="https://www.gstatic.com/realtime/quickstart-styles.css" rel="stylesheet" type="text/css"/>

    <!-- Load the Realtime API JavaScript library -->
    <script src="https://apis.google.com/js/api.js"></script>
  </head>
  <body>
    <main>
      <h1>Realtime Collaboration Quickstart</h1>
      <p>Welcome to the quickstart in-memory app!</p>
      <textarea id="text_area_1"></textarea>
      <textarea id="text_area_2"></textarea>
      <p>This document only exists in memory, so it doesn't have real-time collaboration enabled. However, you can persist it to your own disk using the model.toJson() function and load it using the model.loadFromJson() function. This enables your users without Google accounts to use your application.</p>
      <textarea id="json_textarea"></textarea>
      <button id="json_button" class="visible">GetJson</button>
    </main>
    <script>
      // Load the Realtime API, no auth needed.
      window.gapi.load('auth:client,drive-realtime,drive-share', start);

      function start() {
        var doc = gapi.drive.realtime.newInMemoryDocument();
        var model = doc.getModel();
        var collaborativeString = model.createString();
        collaborativeString.setText('Welcome to the Quickstart App!');
        model.getRoot().set('demo_string', collaborativeString);
        wireTextBoxes(collaborativeString);
        document.getElementById('json_button').addEventListener('click', function(){
          document.getElementById('json_textarea').value = model.toJson();
        });
      }

      // Connects the text boxes to the collaborative string.
      function wireTextBoxes(collaborativeString) {
        var textArea1 = document.getElementById('text_area_1');
        var textArea2 = document.getElementById('text_area_2');
        gapi.drive.realtime.databinding.bindString(collaborativeString, textArea1);
        gapi.drive.realtime.databinding.bindString(collaborativeString, textArea2);
      }
    </script>
  </body>
</html>

Надеюсь, это поможет!

person Teyam    schedule 02.12.2016
comment
Привет, большое спасибо за ответ. Что касается моего вопроса, я уже проверял это раньше, но пришел к выводу, что, хотя RealTime API можно использовать для управления произвольным состоянием в пользовательских приложениях (как вы иллюстрируете), его нельзя использовать для редактирования файлов, созданных Google Приложение "Документы" в смысле слова docs.google.com, т. Е. Эквивалент Google документов MS Word. Это правильно, или я что-то упускаю? - person computer_guy; 03.12.2016