Google Script:如何将自动导入从驱动器中的txt自动导入电子表格?

时间:2017-03-18 14:41:03

标签: javascript google-chrome google-sheets google-sheets-api

我之前从未使用过Javascript,而且我已经尝试了很长时间才能做到这一点,但没有运气,我找不到任何以前的人尝试过。 我想直接从我的驱动器中的这个txt文档复制文本数据,可以手动完成这个,但我希望它每天自动完成。

文本文件;



Boxes Made,3  
Target Percentage,34  
Hourly Rate,2




如果我将其导入电子表格并使用这些设置完美无缺;

Import Settings

它像这样进口;

After Import

现在我需要尝试自动执行此操作,以便脚本自动导入它。 到目前为止我的剧本不起作用,请帮助。

当前脚本;



 function AutoImporter (Source)
{
  var Source = DriveApp.getFilesByName('DailyData.txt');
  var TextContents = Source.copyText();
  var Target = SpreadsheetApp.getActiveSheet();
    
  Target.appendText(TextContents[1]);  
  }




- 修改

有些人刚给我发了一个看起来更接近但仍然没有工作的剧本;



function autoCSV() {
  var ss=SpreadsheetApp.getActiveSpreadsheet();
  var s=ss.getActiveSheet();
  var r=s.getActiveCell();
  var id="DailyData.txt";//<<<<<enter the ID of the text file
  var f3=DriveApp.getFileById(id);
  var lst1=f3.getBlob().getDataAsString().split('\n').map(function(x) {return x.split(',')});
  var ncols=1,i,lst2=[];
  for (i in lst1) {if (lst1[i].length>ncols) ncols=lst1[i].length;}
  for (i=0;i<ncols;i++) lst2.push('');
  for (i in lst1) lst1[i]=lst1[i].concat(lst2.slice(0,lst2.length-lst1[i].length));

  s.getRange(r.getRow(), r.getColumn(), lst1.length, ncols).setValues(lst1);
}
&#13;
&#13;
&#13;

1 个答案:

答案 0 :(得分:1)

您可以通过以下方式阅读Google云端硬盘中的文字文件:

'use strict'; // <- Always use strict mode.

function foo() {

  var fileName = 'DailyData.txt';
  var files = DriveApp.getFilesByName(fileName);
  if (!files.hasNext()) {
    throw new Error('No file with name:' + fileName);
  }
  // We take only the first file among all files with such name.
  var file = files.next();
  var text = file.getBlob().getDataAsString('utf8');
  Logger.log(text);
  // Now you have to parse the file.

}

文档:

  1. DriveApp.getFilesByName会返回File s。
  2. 的集合
  3. File.getBlob返回Blob
  4. Blob.getDataAsString返回String