Значения регистратора Google Таблиц в строки

Я извлекаю данные из файла .csv, созданного после запроса URL, используя UrlFetchApp.fetch, и сохраняю данные с помощью регистратора.

Есть ли способ записать каждую строку данных, полученных из регистратора, в отдельные строки электронной таблицы?


person JaKre    schedule 02.06.2017    source источник


Ответы (1)


Я сделал это довольно давно. Так я импортирую данные из журналов посетителей сайта. Чтобы просмотреть их. Я не использую запятые, потому что вы слишком часто находите их в данных. Вместо этого я использую 3 тильды «~~~», а строки разделяю переводом строки «\ n». Но я в основном разделяю строки, а затем поля в каждой строке на массив и загружаю их в листы по одной строке за раз, и обычно я имею дело с 20 или 30 файлами размером около 100 КБ или меньше. И я обнаружил, что он загружает файлы очень быстро.

function importData1(myFolderID,myFolderName,myFileName) {
  var myFolderID = typeof(myFolderID) !== 'undefined' ? myFolderID : 'FolderID';
  var myFileName = typeof(myFileName) !== 'undefined' ? myFileName : '';
  if(myFileName && myFolderID)
  {
    var fi = DriveApp.getFolderById(myFolderID).getFilesByName(myFileName); // Selected IPLogYYMMDD.txt file
    var ssid = SpreadsheetApp.getActive().getId();
    var ss = SpreadsheetApp.openById(ssid); 
    if (fi.hasNext() ) // proceed if file exists in the IPlogs folder
    { 
      var file = fi.next();
      var data = file.getBlob().getDataAsString();
      var lines = data.split('\n');
      var newsheet = ss.insertSheet(myFolderName + '/' + myFileName); 
      var j=0;
      for (var i=0; i<lines.length; i++ ) 
      {
        var fields = lines[i].split('~~~');
          if(fields.length>=8)//There's supposed to be 8 or 9 fields
        {
          Logger.log('i=' + i + 'fields.length=' + fields.length);
          newsheet.getRange(j+1, 1, 1,fields.length).setValues([fields]);
          j=j+1;
        }
      }
    }
  }
  else
  {
    displayStatus('Error Importing Data','Either Folder or File not found in importData1');
  }

Большинство переменных легко вычислить. Вероятно, вы сможете адаптировать его к тому, что вам нужно. И, возможно, вам будет предложено несколько вариантов ответов.

person Cooper    schedule 02.06.2017
comment
Почему бы не использовать parseCsv(csv_string[, delimiter]) из сервиса "Утилиты"? Затем вы можете просто записать полученный 2D-массив в свой лист. - person Dean Ransevycz; 02.06.2017
comment
Отличная идея. Не знал об этом. Попробую в следующий раз. - person Cooper; 02.06.2017
comment
Работает отлично! Спасибо - person JaKre; 03.06.2017