Как прочитать текстовый файл и скопировать содержимое в файл электронной таблицы Google, используя JavaScript - PullRequest
0 голосов
/ 07 мая 2018

Доброе утро,

У меня на диске Google есть текстовый файл с количеством строк и столбцов, заполненных данными.

Пример данных

ANNO    MESE    GIORNO    D01    D02    D03    D04    D05
2012    4       20        0      2      0      0      0
2012    4       21        0      0      3      0      0
2012    4       22        0      4      0      0      0
2012    4       23        0      0      0      6      0
2012    4       24        0      0      0      0      7

Я хотел бы получить доступ к этому файлу и скопировать его содержимое в файл электронной таблицы Google, используя скрипт электронной таблицы Google (язык javascript).

Я пытался использовать следующий код, но, поскольку я новичок в языке, я не понял, как получить доступ к данным.

function LoadData() {
  
  var FldrId = '1-Ao-MQMv_VxKF5uajG1o4j5dhVRWDk76';
  var FileName = 'TEST_Report_USA.txt';
  
  //Reference to the folder    
  var fldr = DriveApp.getFolderById(FldrId);

  //Get files by that name
  var allFilesInFolder = fldr.getFilesByName(FileName);
  
  Logger.log('allFilesInFolder: ' + allFilesInFolder);

  if (allFilesInFolder.hasNext() === false) {
  return false;
  };
  
  var cntFiles = 0;
  //Even if it's only one file, must iterate a while loop in order to access the file (Google drive will allow multiple files of the same name)
  while (allFilesInFolder.hasNext()) {
    var thisFile = allFilesInFolder.next();
    cntFiles = cntFiles + 1;
    Logger.log('File Count: ' + cntFiles);

    var docContent = thisFile.getAs('text/plain');
    Logger.log('docContent : ' + docContent );
  }
}

Большое спасибо за помощь!

1 Ответ

0 голосов
/ 07 мая 2018

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

Точки изменения:

  • Извлечение большого двоичного объекта из файла с использованием getBlob().
  • Извлечениетекстовые данные из большого двоичного объекта, используя getDataAsString().
  • Анализ текстовых данных в данные CSV, используя Utilities.parseCsv().
  • Поместите данные CSV в электронную таблицу, используя setValues().

Для этих точек модификации, пожалуйста, измените следующим образом.

С:

while (allFilesInFolder.hasNext()) {
  var thisFile = allFilesInFolder.next();
  cntFiles = cntFiles + 1;
  Logger.log('File Count: ' + cntFiles);

  var docContent = thisFile.getAs('text/plain');
  Logger.log('docContent : ' + docContent );
}

До:

var delimiter = "\t"; // Added
while (allFilesInFolder.hasNext()) {
  var thisFile = allFilesInFolder.next();
  cntFiles = cntFiles + 1;
  Logger.log('File Count: ' + cntFiles);

  var docContent = thisFile.getBlob().getDataAsString(); // Modified
  Logger.log('docContent : ' + docContent );
  var csv = Utilities.parseCsv(docContent, delimiter); // Added
  ss.getRange(ss.getLastRow() + 1, 1, csv.length, csv[0].length).setValues(csv); // Added
}

Примечание:

  • В этом модифицированном скрипте данные csv помещаются в электронную таблицу связанного скрипта.
  • Пожалуйста, измените delimiter.В этом сценарии в качестве разделителя используется \t.

Ссылки:

...