автоматически экспортировать CSV из googlesheet на наш сервер - PullRequest
1 голос
/ 20 июня 2019

У нас есть файл CSV, который находится на нашем сервере, https://example.com/thisFIle.csv. Это экспортированные данные из листа Google. Сторонний веб-сайт загружает данные из этого CSV-файла каждые 3 минуты.

Компания, над которой я работаю, занимается бронированием, поэтому их агентами являются лица, обновляющие лист Google, затем я экспортирую данные в CSV, а затем отправлю их на наш сервер.

после поиска я узнал, что в листе Google есть этот раздел сценариев Google. Как я могу вместо экспорта экспортировать CSV, а затем вручную загрузить его на наш сервер, чтобы автоматически использовать этот скрипт Google?

1 Ответ

2 голосов
/ 20 июня 2019

Да, вы можете добиться этого с помощью Google App Script [1].

Используя методы классов в службе электронных таблиц [2] и [3], вы можете получить данные нужного листа, имеющие идентификатор таблицы (идентификатор, который появляется внутри URL при открытии Google.Простынь) .Затем я перебираю данные и анализирую их в строку в формате CSV.

С помощью строки csv вы можете создать объект BLOB-объекта [4], который будет отправлен на сервер с помощью запроса post, используя метод fetch [5].

Чтобы ваш код запускался автоматическинапример, вы можете использовать ручные триггеры и настроить их запуск каждую минуту или по мере необходимости [6].

Вы должны настроить серверное приложение на получение почтового запроса и задать URL-адрес запроса в скрипте приложения (в качестве примера я поставил https://example.com/post).Ниже приведен код, который я тестировал до получения переменной csvBlob:

function myFunction() {
  var ss = SpreadsheetApp.openById("SpreadsheetID");
  var sheet = ss.getSheets()[0];

  // This represents ALL the data
  var range = sheet.getDataRange();
  var values = range.getValues();
  var csvStr = "";

   // This creates a string of the spreadsheet in CSV format with a trailing comma
   for (var i = 0; i < values.length; i++) {
       var row = "";
       for (var j = 0; j < values[i].length; j++) {
           if (values[i][j]) {
              row = row + values[i][j];

           row = row + ",";

       row = row.substring(0, (row.length-1));
       csvStr += row + "\n";
   } 

  //creates de Blob of the csv file
  var csvBlob = Utilities.newBlob(csvStr, 'text/csv', 'example.csv');
  Logger.log(csvBlob.getDataAsString());

  //make a post request to the server (I didn't test this part)
  var formData = {
      'name': 'Bob Smith',
      'email': 'bob@example.com',
      'file': csv
  };
  var options = {
      'method' : 'post',
      'payload' : formData
  };
  UrlFetchApp.fetch('https://example.com/post', options);
}

[1] https://script.google.com/home

[2] https://developers.google.com/apps-script/reference/spreadsheet/spreadsheet-app

[3] https://developers.google.com/apps-script/reference/spreadsheet/sheet

[4] https://developers.google.com/apps-script/reference/utilities/utilities#newBlob(Byte,String,String)

[5] https://developers.google.com/apps-script/reference/url-fetch/url-fetch-app

[6] https://developers.google.com/apps-script/guides/triggers/installable

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...