如何使用javascript读取txt文件并将内容复制到google电子表格文件中

时间:2018-05-07 07:12:47

标签: javascript google-sheets spreadsheet

早上好,

我的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电子表格脚本(javascript语言)将内容复制到Google电子表格文件中。

我尝试使用以下代码,但由于我是语言新手,因此我无法获取如何访问数据。



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 :(得分:1)

这次修改怎么样?此修改后的脚本假设您使用Spreadsheet的容器​​绑定脚本。

修改要点:

  • 使用getBlob()从文件中检索blob。
  • 使用getDataAsString()中检索文本数据。
  • 使用Utilities.parseCsv()将文本数据解析为csv数据。
  • 使用setValues()将csv数据放入电子表格。

对于这些修改点,请修改如下。

来自:

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用作分隔符。

参考文献: