Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/google-sheets/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Google apps script 如何编写google脚本,将包含CSV文件的google文件夹驱动器中的数据自动调用到google Sheets中_Google Apps Script_Google Sheets_Google Drive Api_Google Spreadsheet Api - Fatal编程技术网

Google apps script 如何编写google脚本,将包含CSV文件的google文件夹驱动器中的数据自动调用到google Sheets中

Google apps script 如何编写google脚本,将包含CSV文件的google文件夹驱动器中的数据自动调用到google Sheets中,google-apps-script,google-sheets,google-drive-api,google-spreadsheet-api,Google Apps Script,Google Sheets,Google Drive Api,Google Spreadsheet Api,我正在尝试编写一个谷歌脚本,让我可以进入名为“MeadJohsnon”的谷歌硬盘文件夹,将“Temperature Calibration.csv”拉到谷歌工作表中。我以前从未使用过谷歌脚本。目前我有“保存电子邮件和附件”附加组件。此加载项正在提取团队从现场发送给我的.cvs文件。他们使用“TapForms”,然后通过电子邮件将表格发送到我的gmail。所以,我收到了将附件发送到谷歌硬盘的电子邮件,但我需要脚本帮助,所以硬盘将自动获取这些.cvs文件,并将信息放入一个谷歌工作表中。我说一张谷歌表

我正在尝试编写一个谷歌脚本,让我可以进入名为“MeadJohsnon”的谷歌硬盘文件夹,将“Temperature Calibration.csv”拉到谷歌工作表中。我以前从未使用过谷歌脚本。目前我有“保存电子邮件和附件”附加组件。此加载项正在提取团队从现场发送给我的.cvs文件。他们使用“TapForms”,然后通过电子邮件将表格发送到我的gmail。所以,我收到了将附件发送到谷歌硬盘的电子邮件,但我需要脚本帮助,所以硬盘将自动获取这些.cvs文件,并将信息放入一个谷歌工作表中。我说一张谷歌表单是因为尽管我有一个团队发送表单,但所有表单上的信息都是相同的

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

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);
}
我只想得到关于如何纠正错误或我可以做些什么的反馈。如上所述,这是我第一次使用谷歌脚本,我的专长是ASP.NETLOL而不是脚本。多谢各位

  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;
}
好的,这会将文件附加到活动的电子表格中。您可能必须按id打开电子表格,并使用getSheetByName获取所需的工作表,因为当触发器运行时,该电子表格可能不会一直处于活动状态。我假设所有文件都以.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;
}
好的,这会将文件附加到活动的电子表格中。您可能必须按id打开电子表格,并使用getSheetByName获取所需的工作表,因为当触发器运行时,该电子表格可能不会一直处于活动状态。我假设所有文件都以.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;
}

是否在任何地方定义了“温度校准”csv\U id?i、 e.var温度校准csv id='hsdojsdajkhadfsad89ojfsadasdfklsad89';不,那条线在任何地方都没有定义!我应该给它分配什么值?你试图添加数据的谷歌工作表的ID。谢谢,这是我困惑的部分。我不知道在哪里找到ID。它在工作表的URL中。是否在任何地方定义了“温度校准csv\U ID”?i、 e.var温度校准csv id='hsdojsdajkhadfsad89ojfsadasdfklsad89';不,那条线在任何地方都没有定义!我应该给它分配什么值?你试图添加数据的谷歌工作表的ID。谢谢,这是我困惑的部分。我不知道该ID的位置。它位于工作表的URL中。谢谢您的回复。我正在尝试将“Temperature Calibration.csv”放入名为MeadJohnson的驱动器文件夹,并将其放入谷歌表单文件名为Mead_Johnson的文件夹中。这是我在您发送给我的代码中填写的内容,这很有帮助,但不会返回我正在查找的结果。您有其他建议吗?var data=loadFile('Temperature Calibration.csv'));var-dataA=Utilities.parseCsv(data);var-rng=sht.getRange(1,1,dataA.length,dataA[0].length)rng.setValues(dataA);}函数加载文件(filename,folderID){var filename=(typeof(filename)!='Mead(Johnson')?filename:DefaultFileName;var-folderID=(typeof(folderID)!='0B8m9xkDP_-tjxuluehxowjmbjg')folderID:DataFolderID;var fldr=DriveApp.getFolderById('0B8m9xkDP_tjxululehxowjmbjg');var file=fldr.getFilesByName('Mead_Johnson'));我有一个附加功能,可以将.csv文件从gmail拉到我在google drive中的MeadJohnson文件夹。在该文件夹中,我有一个空白的Mead_Johnson google工作表。我想自动化这些.csv文件进入Mead_Johnson google工作表的过程,而不必手动更新。这可能吗?我用您的变量修改了代码。Yes你可以用自动完成。工作完美。我现在要把定时触发器放在那里。谢谢你的回答库珀。我正在尝试将Temperature Calibration.csv放入我名为MeadJohnson的驱动器文件夹中,并放入谷歌表格文件名为Mead_Johnson的文件夹中。这是我在您发送给我的代码中填写的内容,这很有用,但不会返回我要查找的结果。您还有其他建议吗?var data=loadFile('Temperature Calibration.csv');var dataA=Utilities.parseCsv(data);var rng=sht.getRange(1,1,dataA.length,dataA[0].length)rng.setValues(dataA);}函数加载文件(filename,folderID){var filename=(typeof(filename)!='Mead_Johnson')?filename:DefaultFileName;var folderID=(typeof(folderID)!='0B8m9xkDP(tjxululehxoxowjmbjg')?folderID:DataFolderID;var fldr=DriveApp.getFolderById('0B8m9xkDP_tjxuuluehxowjmbjg');var file=fldr.getFilesByName('Mead_Johnson'));我有一个附加功能,可以将.csv文件从gmail拉到我在google drive中的MeadJohnson文件夹。在该文件夹中,我有一个空白的Mead_Johnson google工作表。我想自动化这些.csv文件进入Mead_Johnson google工作表的过程,而不必手动更新。这可能吗?我用您的变量修改了代码。Ye你可以用一个自动完成。工作得很好。我现在要把定时触发器放在那里。谢谢