Работа с гугл таблицами через бас

Поддержка
  • @Vennix Читаем данные столбца
    В таблице : Инструменты-редактор скриптов

    var ss = SpreadsheetApp.getActiveSpreadsheet(), // spreadsheet
          s = ss.getActiveSheet(); // sheet
    
    function getData(){
      var result = [],
          range = 'B:B', // диапазон ячеек, который хотим выгружать
          values = s.getRange(range).getValues(),
          last_row = parseInt(s.getLastRow());
        
      for (var i = 1; i < last_row; i++) {
          result.push(values[i]);     
      }
      return result; 
    }
    
    
    function doGet() {
      var data = getData();
      if(!data) {
        data = '';
      }
      return ContentService.createTextOutput(
        JSON.stringify({'result': data})).setMimeType(ContentService.MimeType.JSON);
    }
    

    Назвать, сохранить и опубликовать как веб-приложение
    Скопировать URL в конце и вставить в Get запрос в БАСе

  • Благодарю. Ячейки читает. Единственная проблема, что читает только выбранный изначально диапазон ячеек, при создании скрипта. После измения, сохранения и публикации, в скрипте сохраняется новый диапазон, но почему-то при запросах работает только старый. В чем может быть дело?

  • @AndreyKa Есть подобный пример для записи в таблицу переменной из баса?

  • @Vennix Да, у меня также. Не понял в чем дело. Делаю для каждого диапазона свой скрипт и запрос.

  • @AndreyKa @Vennix Чтобы после редактирования скрипта изменения применились надо при публикации указать, что "новая" версия. Нужный диапазон и любые другие данные данные можно передавать в самом запросе
    Доки
    https://developers.google.com/apps-script/guides/web
    https://developers.google.com/apps-script/reference/spreadsheet/spreadsheet-app

  • @Vennix это запись по тому-же принципу

    function doGet(e)
    {
      var sheet = SpreadsheetApp.openById("код из ссылки на таблицу");
      var n=sheet.getRange("A1").getValue()+2;
      var d = new Date(); 
      sheet.getRange("A"+n).setValue(d);
      sheet.getRange("B"+n).setValue(e.parameter.p1);
      sheet.getRange("C"+n).setValue(e.parameter.p2);
      sheet.getRange("D"+n).setValue(e.parameter.p3);
      sheet.getRange("E"+n).setValue(e.parameter.p4);
      sheet.getRange("F"+n).setValue(e.parameter.p5);
      sheet.getRange("G"+n).setValue(e.parameter.p6);
      sheet.getRange("H"+n).setValue(e.parameter.p7);
      sheet.getRange("A1").setValue(n-1);
    }
    

    В А1 записываем 0 и запись начнется со второй строки.
    К ссылке после публикации добавляем ?p1=[[переменная1]]&p2=[[переменная2]]&p3=&p4=&p5=&p6=&p7=
    В значениях для записи не должно быть пробелов (убираю так: [[SAVED_TEXT]].replace(/\s+/g,''))

  • @Vennix это перезапись:

    function doGet(e)
    {
      var sheet = SpreadsheetApp.openById("код из ссылки на таблицу");
      sheet.getRange("K1").setValue(e.parameter.p1);
      var n=sheet.getRange("K1").getValue();
      var d = new Date(); 
      sheet.getRange("A"+n).setValue(d);
      sheet.getRange("B"+n).setValue(e.parameter.p2);
      sheet.getRange("C"+n).setValue(e.parameter.p3);
      sheet.getRange("D"+n).setValue(e.parameter.p4);
      sheet.getRange("E"+n).setValue(e.parameter.p5);
      sheet.getRange("F"+n).setValue(e.parameter.p6);
      sheet.getRange("G"+n).setValue(e.parameter.p7);
      sheet.getRange("H"+n).setValue(e.parameter.p8);
    }
    

    В K1 записываю номер строки которую перезаписываю

  • @AndreyKa добрый вечер. очень помог Ваш шаблон чтения таблицы по запросу, спасибо, а вот с этим примером не могу разобраться... не могли бы Вы показательный примерчик сделать записи значения переменной в определенную ячейку гугл таблицы?

  • @Alstellar А что не получается?
    запрос такого вида должен получиться: https://script.google.com/macros/s/AKfxQ-hRenQAg-m3cwAhFXjC_EgZJghmznefwts/exec?p1=34&p2=12345678&p3=$999

  • @AndreyKa said in Работа с гугл таблицами через бас:

    @Alstellar А что не получается?
    запрос такого вида должен получиться: https://script.google.com/macros/s/AKfxQ-hRenQAg-m3cwAhFXjC_EgZJghmznefwts/exec?p1=34&p2=12345678&p3=$999

    Да, только знак доллара нужно будет экранировать - гуглите метод encodeURIComponent()

  • This post is deleted!