如何编写 google 脚本以自动将包含 CSV 文件的 google 文件夹驱动器中的数据调用到一个 Google 工作表中

How to write google script to automatically call data from a google folder drive that contains a CSV file into one Google Sheets

我正在尝试编写一个 google 脚本,允许我进入名为 "MeadJohsnon" 的 google 驱动器文件夹并将 'Temperature Calibration.csv' 拉到 google sheets。我以前从未使用过 google 脚本。目前我有 "Save Email and Attachment" 附加组件。这个附加组件正在提取我的团队从现场发送给我的 .cvs 文件。他们使用 "TapForms" 然后通过电子邮件将表格发送到我的 gmail。因此,我收到了将附件发送到我的 google 驱动器的电子邮件,但我需要有关脚本的帮助,因此 Drive 会自动获取这些 .cvs 文件并将信息放入一个 google sheet .我说一个 google sheet 因为虽然我有一个团队发送表格,但所有表格都有相同的信息。

这就是我到目前为止所做的。第四行给了我一个

function loadingCSV() {
 var ss=SpreadsheetApp.getActiveSpreadsheet()
 var sht=ss.getActiveSheet();
 sht.clearContents();
 var data = loadFile();
 var dataA =Utilities.parseCsv(data);
 var rng = sht.getRange(1, 1, dataA.length, dataA[0].length);
 rng.setValues(dataA);
}

我只想获得有关如何修复我的错误或我可以做什么的反馈。如前所述,这是我第一次使用 google 脚本,我的专长是 ASP.net 大声笑不是脚本。谢谢你。

  function loadingCSV() {
  var ss=SpreadsheetApp.getActiveSpreadsheet()
  var sht=ss.getActiveSheet();
  sht.clearContents();
  var data = loadFile();
  var dataA =Utilities.parseCsv(data);
  var rng = sht.getRange(1, 1, dataA.length, dataA[0].length);
  rng.setValues(dataA);
}

function loadFile(filename,folderID)
{
  var filename = (typeof(filename) !== 'undefined')? filename : 'Temperature Calibration.csv';
  var folderID = (typeof(folderID) !== 'undefined')? folderID : '0B8m9xkDP_TJxUUlueHhXOWJMbjg';
  var fldr = DriveApp.getFolderById(folderID);
  var file = fldr.getFilesByName(filename);
  var s = '';
  while(file.hasNext())
  {
    var fi = file.next();
    var target = fi.getName();
    if(target == filename)
    {
      s = fi.getBlob().getDataAsString();
    }
  }
  return s;
}

好的,这会将文件附加到活动的跨页sheet,您可能必须通过 ID 打开跨页sheet,然后使用 getSheetByName 来获取您想要的 sheet,因为当触发器为 运行 时,此价差 sheet 可能不会一直处于活动状态。我假设文件都以 .csv 结尾。我在读取数据后将它们重命名为.old,这样程序就不会多次读取它们。

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;
}