среда, 31 августа 2016 г.

Использование Google Spreadsheet как JSON бэкенд


При написании простого веб приложения или прототипировании чего-нибудь, иногда хочется иметь быстрое и простое средство хранения, редактирования и извлечения данных.
Например, ты пишешь простой блог и тебе совсем не хочется строить бэкенд, дабы записывать, редактировать и хранить там посты, но ты хочешь удобно собирать эти данные как JSON — Google Drive поможет тебе с этим.

Шаг 1: Создание таблицы и публикация ее в веб


С блогом как примером ты, наверное, захочешь создать таблицу типа такой:


Потом ты можешь опубликовать этот документ в веб. Для этого выбери «Файл» > «Опубликовать в интернете...». В нижней части диалога ты можешь увидеть ссылку к данным, но он дает нам доступ только к HTML (попробуй изменить «html» на «json» — не сработает).

Скопируй все, после key= (в моем примере — 0AtMEoZDi5-pedElCS1lrVnp0Yk1vbFdPaUlOc3F3a2c) и подставь это в URL: spreadsheets.google.com/feeds/list/PUT-KEY-HERE/od6/public/values?alt=json-in-script&callback=вместо "PUT-KEY-HERE".

URL для моего примера: spreadsheets.google.com/feeds/list/0AtMEoZDi5-pedElCS1lrVnp0Yk1vbFdPaUlOc3F3a2c/od6/public/values?alt=json-in-script&callback=. Эта ссылка не рабонает напрямую из браузера, но, если ты добавишь что-нибудь, например «х», в этот URL, то она покажет твои данные как JSONP.

Ты также можешь получить данные как чистый JSON (но тебе будет нужно пропустить это сначала через CORS прокси, например cors.io) по ссылке: spreadsheets.google.com/feeds/list/PUT-KEY-HERE/od6/public/values?alt=json

Теперь в своем веб приложении ты можешь получить данные и использовать их как захочешь, например так:
$.getJSON("http://cors.io/spreadsheets.google.com/feeds/list/0AtMEoZDi5-pedElCS1lrVnp0Yk1vbFdPaUlOc3F3a2c/od6/public/values?alt=json", function(data) {
    //first row "title" column
    console.log(data.feed.entry[0]['gsx$title']['$t']);
});
Перевод: Martin
 
Алексей Слайковский @slaykovsky 
карма
8,0
 
рейтинг0,0
RVH QE Automation





Комментарии (27)

  •   
    –17
      
    Например, ты пишешь простой блог и тебе совсем не хочется строить бэкенд, дабы записывать, редактировать и хранить там посты, но ты хочешь удобно собирать эти данные как JSON — Google Drive поможет тебе с этим.

    А как правильно сказать, «ты мне не тычь!» или «Вы мне не тычьте!»?
    •     
      +1
        
      может ты мне не тыкай? и вы мне не тыкайте? может так? :)
      •     
        +5
          
        — правильно писать комменты к постам по существу поста, а не по своим представлениям о русском языке, как-то так.
        •     
          –8
            
          Да ну, очень ли надо читать что-то в стиле ксакепа? На ксакепе так принято, здесь не так. А если с вами начнут вести намеренно грубую беседу, что, тоже делать вид, что ничего не происходит, вытирать плевки и рассуждать о сути скриптов, отдаваемых сервисом?
          •     
            0
              
            человек просто поделился своей находкой и излагает результаты в дружелюбном, мягком стиле… в чем же его грубость? впрочем, я не лучше. сам же начал писать не по теме поста.
            •     
              –4
                
              Я не говорил о его грубости. Я о том, что форма влияет на передачу содержания. Если начинают писать в стиле xakep.ru на Хабре, это выбивается из принятого стиля, и тут дело не в представлениях о русском языке, а о стиле. Менторско-панибратский стиль здесь совершенно не к месту. И, собственно, мой вопрос — по сути: как к автору в таком случае обращаться?
              UPD: не к автору — к переводчику.
              •     
                –1
                  
                Это не должно, наверное, зависеть от случая. Просто если Вы придерживаетесь определенных норм вежливости, считаете их правильными, а также считаете, что они соответствуют традициям этого коллективного пространства, то будете, наверное, писать автору (переводчику) «Вы» независимо от того, как пишет он. С другой стороны, я не очень понимаю, что такого уж плохого в общении на «ты», если собеседник придерживается такого стиля, а мы явно не на официальном форуме сайта министерства культуры.
                •     
                  +1
                    
                  Ничего не мешает, если не считать того, что заслоняет то самое содержание, ради которого опубликован перевод.

                  А по сути фичи я бы вот что добавил. Заходите на любой сайт, где есть jQuery, например, Хабр.
                  Вписываете в консоль:
                  $.getJSON('http://cors.io/spreadsheets.google.com/feeds/list/'
                      +'0AtMEoZDi5-pedElCS1lrVnp0Yk1vbFdPaUlOc3F3a2c/od6/public/values?alt=json'
                    ,function(data){
                      console.log(data.feed.entry[0]['gsx$title']['$t']);
                  });
                  

                  или другой пример из интернета (большая таблица, форму только что сам написал)
                  $.getJSON('http://cors.io/spreadsheets.google.com/feeds/list/'
                      +'rxkw_khCxHvetWkGsRXmGtA/od6/public/values?alt=json'
                    ,function(data){
                      console.table(data.feed.entry);
                  });
                  

                  Так что штуку полезную переводчик донёс, но форма…
                  Мне приятнее было бы видеть обычный культурный стиль сообщения. Несмотря на то, что мы можем получить полезную информацию и из такого.
                  UPD: Да, вот сама таблица без джсона: spreadsheets.google.com/pub?key=rxkw_khCxHvetWkGsRXmGtA
                  •     
                    0
                      
                    Привет! Чем же не угодило безобидное «ты»? Я ведь не хотел никого обидеть и не грубил. У меня стиль общения такой — я со всеми на «ты» общаюсь, а «вы» считаю анахронизмом. И знать я не знаю, как там на Хакере. Так что, дело не в «ты», а в отношении к этому местоимению. Спасибо.
                    •     
                      +1
                        
                      Звучит фамильярно. Вы сами можете считать «вы» анахронизмом, но для очень многих людей это совсем не так, и Ваш тон выглядит неприятно.

                      А за информацию — спасибо.
                •     
                  +1
                    
                  К переводчику обращаться — как душа пожелает :) Только не на «Эй!» ^_^
        •   
          0
            
          Редактировать данные при этом получится только на стороне гугла? Т.е. свою админку с изменением данных я уже никак не сделаю? После изменения данных обязательно каждый раз выполнять «Опубликовать в интернете...»? Несколько листов обрабатывать умеет? Имеется ввиду аналог таблиц БД: отдельный лист под комментарии, отдельный для блога, отдельный для фотоальбома
          •     
            0
              
            есть галочка — автоматически публиковать в интернете изменения, но, к сожалению, даже если она стоит, данные обновляются только раз в 5 минут.
          •   
            0
              
            Просто восхитительный такой бекэнд.
            Не проще тот же sqlite заюзать?
            •     
              0
                
              удобно редактировать данные в онлайне, не нужно отдельно про интерфейсы админки думать
            •   
              +3
                
              Использовали подобный способ в одном из проектов для управления данными и их хранением в Google Spreadsheet, только с получением данных на стороне сервера из csv:

              PHP код:
              $spreadsheet_url=«docs.google.com/spreadsheet/pub?key=KEY&single=true&gid=5&output=csv»;
              if(!ini_set('default_socket_timeout', 15)) echo "";
              $data = file_get_contents($spreadsheet_url);
              var_dump($data);

              KEY — ключ документа, gid — задает номер вкладки, из которой нужно получить данные. В целом очень удобно, не нужно админок колдовать лишних, и можно сразу задать калькулируемые значения.

              За вариант с JSON — спасибо, попробую использовать.
              •     
                0
                  
                Спасибо за CSV пример :)
              •   
                +1
                  
                А мне кажется проще Parse.com.
                •     
                  0
                    
                  Спасибо, хорошая штука. Только, не проще ведь :)
                •   
                  +2
                    
                  а в официальной документации не то же самое?
                  •     
                    0
                      
                    и еще вроде бы есть живой пример, чтобы и писать в spreadsheet, но сам не тестил
                    •     
                      0
                        
                      Спасибо. Не читал документацию, так как не приходилось сталкиваться с этим :) Увидел пост на coderwall и подумал, что это будет интересно не только мне. И перевел. Спасибо и за пример.
                  •   
                    0
                      
                    Для руби вот этот гем замечательный. Подключаешь, тут же читаешь и пишешь в таблицу.
                    •     
                      0
                        
                      Классный гем, да. Спасибо :)
                    •   
                      0
                        
                      •     
                        0
                          
                        Какая интересная штука! Спасибо :)
                        •     
                          0
                            
                          Кайф в том, что там есть SQL и вьюхи (вместо джойнов, которых, к сожалению, нет)

                    0 коммент.:

                    Отправить комментарий