Google脚本从Google云端硬盘导入txt文件

时间:2019-09-09 11:13:15

标签: arrays google-apps-script google-sheets format setvalue

所以我试图根据文件名和选项卡名称编写一个脚本来导入文本文件。

txt文件是游戏服务器日志摘录,3种不同类型的日志。

我设法获得了基于文件名(类型)来导入文本的脚本,但是在移到下一个类型或日志之前,在循环结束时运行一些简单的格式时遇到了问题。

基本上,脚本将从日志文件中导入所有文本,并将其解析为CSV并将其转储到工作表中。该工作表会删除重复项,将文本分为几列等,它们应移至下一类日志(和“切换”标签)-重复。

我仍在整理脚本,所以请保持柔和....!任何帮助将不胜感激。

function ImportAll() {
var folderID = "my google drive foler"
var folder = DriveApp.getFolderById(folderID);
var ss, sRow, lRow, fRow, csvData, logFile, file, sheet = 
SpreadsheetApp.getActive();

var data = [];
var logType = ["admin_", "kill_", "login_"]
var allSheets = ['Admin', 'Kill', 'Login']


for (var k = 0; k < logType.length; k++) {
  var files = folder.searchFiles('title contains "' + logType[k] + '"');
  while (files.hasNext()) {
    file = files.next();   
    data.push(file.getName())
  };
  ss = sheet.getSheetByName(allsheets[k])
  sRow = ss.getDataRange().getLastRow() + 1;
  //Browser.msgBox(data[0])
  for (var i = 0; i < data.length; i++) {
    logFile = DriveApp.getFilesByName(data[i]).next();
    csvData = Utilities.parseCsv(logFile.getBlob().getDataAsString());
    fRow = ss.getDataRange().getLastRow() + 1;
    ss.getRange(fRow, 1, csvData.length, csvData[0].length).setValues(csvData);

  };
  lRow = ss.getDataRange().getLastRow();
  ss.getRange('A' + sRow + ':A' + lRow).removeDuplicates().activate();  
  ss.getRange('A' + sRow + ':A' + lRow).splitTextToColumns('-');
  ss.getRange('B' + sRow + ':B' + lRow).splitTextToColumns(':');
  ss.getRange('B:B').setNumberFormat('HH:mm:ss');
  ss.getFilter().remove();
  ss.getRange('A1:E' + lRow).createFilter();

  var rng = sheet.getRange('D2:D' + lRow)
  var rngV = rng.getValues();
  var String = "";    

  for(var i=0;i<rngV.length;i++)
  {
    String = rngV[i].toString().replace(s, '')
    rngV[i] = String // is working 
  }

  rng.setValues(rngV)  // NOT WORKING!!!!!!

  //sheet.appendRow(data); //throws [L]JavaLang@****
}

};
}

我不断抛出“ TypeError:无法调用null的方法” getDataRange”。错误,而我尝试了很多不同的尝试,无济于事。

0 个答案:

没有答案