Google apps script 如何编写google脚本,将包含CSV文件的google文件夹驱动器中的数据自动调用到google Sheets中
我正在尝试编写一个谷歌脚本,让我可以进入名为“MeadJohsnon”的谷歌硬盘文件夹,将“Temperature Calibration.csv”拉到谷歌工作表中。我以前从未使用过谷歌脚本。目前我有“保存电子邮件和附件”附加组件。此加载项正在提取团队从现场发送给我的.cvs文件。他们使用“TapForms”,然后通过电子邮件将表格发送到我的gmail。所以,我收到了将附件发送到谷歌硬盘的电子邮件,但我需要脚本帮助,所以硬盘将自动获取这些.cvs文件,并将信息放入一个谷歌工作表中。我说一张谷歌表单是因为尽管我有一个团队发送表单,但所有表单上的信息都是相同的 这就是我到目前为止所做的。第四行给了我一个答案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文件,并将信息放入一个谷歌工作表中。我说一张谷歌表
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你可以用一个自动完成。工作得很好。我现在要把定时触发器放在那里。谢谢