使用谷歌脚本将.csv文件导入现有的谷歌表。格式化问题。

时间:2017-06-23 14:59:21

标签: csv google-apps-script google-sheets google-drive-api

当将新的.csv文件从我的一个驱动器文件夹导入到现有的google工作表中时,是否有办法不复制标题?我希望.csv文件按顺序添加到现有工作表而不添加标题...示例 - 如第2行和第19行所示。另外,按顺序将日期按照A列顺序排列。我的另一个问题是,你知道第10行发生了什么吗?我已删除并重新输入新数据,并且每次都发生这种情况。这是我现在的脚本。这是表格的可共享链接及其外观。 https://docs.google.com/spreadsheets/d/1f9HEwikMxm5sJzzRh_-etBxXzL0NpK47i9LtoZVCv_0/edit?usp=sharing这是我现在的剧本。

function appendingCSV() {
 var ss=SpreadsheetApp.getActiveSpreadsheet()
 var sht=ss.getActiveSheet();
 var drng = sht.getDataRange();
 var lastRow = drng.getLastRow();
 var data = loadFiles();
 var dataA =Utilities.parseCsv(data);
if(dataA.length>0)
{
 var rng = sht.getRange(lastRow + 1, 1, dataA.length, dataA[0].length);
 rng.setValues(dataA);
}
else
{
  SpreadsheetApp.getUi().alert('No Data Returned from LoadFiles');
}
}

function loadFiles(folderID)
{
 var folderID = (typeof(folderID) !== 'undefined')? folderID : 
 '0B8m9xkDP_TJxUUlueHhXOWJMbjg';
var fldr = DriveApp.getFolderById(folderID);
var files = fldr.getFiles();
 var s='';
 var re = /^.*\.csv$/i;
 while (files.hasNext())
 {
  var file = files.next();
  var filename = file.getName();
  if(filename.match(re))
  {
    s += file.getBlob().getDataAsString() + '\n';
    file.setName(filename.slice(0,-3) + 'old');
  }
 }
 return s;
}

function createTimeDrivenTriggers() {
// Trigger every Friday at 09:00.
 ScriptApp.newTrigger('myFunction')
    .timeBased()
    .onWeekDay(ScriptApp.WeekDay.FRIDAY)
    .atHour(9)
    .create();
 }

1 个答案:

答案 0 :(得分:1)

在loadFiles()脚本中。尝试将其更改为类似的内容。

function loadFiles(folderID)
{
  //var folderID = (typeof(folderID) !== 'undefined')? folderID : 'Your_folder_id';
  var folderID = (typeof(folderID) !== 'undefined')? folderID : 'Your_folder_id';
  var fldr = DriveApp.getFolderById(folderID);
  var files = fldr.getFiles();
  var s='';
  var re = /^.*\.csv$/i;
  while (files.hasNext())
  {
    var file = files.next();
    var filename = file.getName();
    if(filename.match(re))
    {
      s+=file.getBlob().getDataAsString().split('\n').splice(0,1).join('\n') + '\n';
      //s += file.getBlob().getDataAsString() + '\n';
      file.setName(filename.slice(0,-3) + 'old');
    }
  }
  return s;
}

你可能需要稍微玩一下。我不确定最后一个' \ n'需要与否,我在连接这么多操作时并不是那么好。但是您需要从每个文件中删除标头。您可以编写一个本地脚本,您提供给您的技术人员,剥离原点上的标题,然后再回到现在的状态。