Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/461.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/ssh/2.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
Javascript 如何自动查找或添加添加到特定文件夹位置的最新图纸_Javascript_Csv_Google Sheets - Fatal编程技术网

Javascript 如何自动查找或添加添加到特定文件夹位置的最新图纸

Javascript 如何自动查找或添加添加到特定文件夹位置的最新图纸,javascript,csv,google-sheets,Javascript,Csv,Google Sheets,我需要两件事来帮助我完成谷歌表单报告。我会解释的 我有我的谷歌工作表脚本,它可以将数据从csv文件发送到谷歌工作表文件,生成一份报告,到目前为止,效果非常好,没有任何问题。但唯一的问题是,每天我都必须手动添加新的cvs文件名,这样我的脚本就可以获取csv数据,并在每天早上9点从触发器将数据发送到新的google工作表以用于报告目的。因此,我想看看是否有一种方法可以代替我手动添加新的csv名称,脚本可以找到它并添加它 所以在这里,我必须在触发器运行之前手动添加新的csv文件名,我想看看脚本是否可以

我需要两件事来帮助我完成谷歌表单报告。我会解释的

我有我的谷歌工作表脚本,它可以将数据从csv文件发送到谷歌工作表文件,生成一份报告,到目前为止,效果非常好,没有任何问题。但唯一的问题是,每天我都必须手动添加新的cvs文件名,这样我的脚本就可以获取csv数据,并在每天早上9点从触发器将数据发送到新的google工作表以用于报告目的。因此,我想看看是否有一种方法可以代替我手动添加新的csv名称,脚本可以找到它并添加它

所以在这里,我必须在触发器运行之前手动添加新的csv文件名,我想看看脚本是否可以代替我添加它

var fi=fSource.getFilesByName('201707230600060843.csv');//最新报告文件

这是我每天需要运行的每日触发器

这是我的剧本

function importData() {
  var fSource = DriveApp.getFolderById("0ByXeCX01JfKJN1dTNk1SRlQyb1k"); // reports_folder_id = id of folder where csv reports are saved
  var fi = fSource.getFilesByName('201707230600060843.csv'); // latest report file
  var ss = SpreadsheetApp.openById("1T2JU4KwpJsnlJk0LOEZoHr9uqnNrVYwBWI1NxOwL4PU"); // data_sheet_id = id of spreadsheet that holds the data to be updated with new report data


  if ( fi.hasNext() ) { // proceed if "report.csv" file exists in the reports folder
    var file = fi.next();
    var csv = file.getBlob().getDataAsString();
    var csvData = CSVToArray(csv); // see below for CSVToArray function
    //var newsheet = ss.insertSheet("NEWDATA"); // create a 'NEWDATA' sheet to store imported data
    var sheetname = Utilities.formatDate(new Date(), Session.getScriptTimeZone(), "MM/dd/yyyy");
    var newsheet = ss.insertSheet(sheetname);
    // loop through csv data array and insert (append) as rows into 'NEWDATA' sheet
    for ( var i=0, lenCsv=csvData.length; i<lenCsv; i++ ) {
      newsheet.getRange(i+1, 1, 1, csvData[i].length).setValues(new Array(csvData[i]));
    }
    /*
    ** report data is now in 'NEWDATA' sheet in the spreadsheet - process it as needed,
    ** then delete 'NEWDATA' sheet using ss.deleteSheet(newsheet)
    */                                                    
    // rename the report.csv file so it is not processed on next scheduled run
    file.setName("report-"+(new Date().toString())+".csv");
  }
};
函数导入数据(){
var fSource=DriveApp.getFolderById(“0ByXeCX01JfKJN1dTNk1SRlQyb1k”);//报告\文件夹\ id=csv报告保存文件夹的id
var fi=fSource.getFilesByName('201707230600060843.csv');//最新报告文件
var ss=SpreadsheetApp.openById(“1t2ju4kwpjsnljk0loezohr9uqnnrvywwwi1nxowl4pu”);//data_sheet_id=保存要用新报表数据更新的数据的电子表格的id
如果(fi.hasNext()){//如果报告文件夹中存在“report.csv”文件,则继续
var file=fi.next();
var csv=file.getBlob().getDataAsString();
var csvData=CSVToArray(csv);//有关CSVToArray函数,请参见下文
//var newsheet=ss.insertSheet(“NEWDATA”);//创建一个“NEWDATA”表来存储导入的数据
var sheetname=Utilities.formatDate(new Date(),Session.getScriptTimeZone(),“MM/dd/yyyy”);
var newsheet=ss.insertSheet(sheetname);
//循环浏览csv数据数组,并作为行插入(追加)到“NEWDATA”工作表中

对于(var i=0,lenCsv=csvData.length;i我将其设置为,新文件名是什么,只要其扩展名为.csv。最后,我将所有文件的扩展名都更改为old,以便第二天不会重新处理它们

function importData(folderID)
{
  var ss = SpreadsheetApp.openById("1T2JU4KwpJsnlJk0LOEZoHr9uqnNrVYwBWI1NxOwL4PU");
  var folderID = (typeof(folderID) !== 'undefined')? folderID : '0ByXeCX01JfKJN1dTNk1SRlQyb1k';//default folderID
  var fldr = DriveApp.getFolderById(folderID);
  var files = fldr.getFiles();
  var dt = Utilities.formatDate(new Date(), Session.getScriptTimeZone(),"yyyyMMdd");
  var re =new RegExp('^' + dt + '.*\.csv$','i');
  while (files.hasNext())
  {
    var file = files.next();
    var filename = file.getName();
    if(filename.match(re))
    {
      var csvstr=file.getBlob().getDataAsString();
      var csvA=Utilities.parseCsv(csvstr);
      var sheetname = Utilities.formatDate(new Date(), Session.getScriptTimeZone(), "M/dd/yyyy'-'HH:mm:ss");
      var newsheet = ss.insertSheet(sheetname); 
      newsheet.getRange(1, 1, csvA.length, csvA[0].length).setValues(csvA);
      file.setName(filename.slice(0,-3) + 'old');  //the .old files won't pass the file re filter next time. 
    }
  }
}

谢谢你,我会在明天早上9点运行你的脚本,看看它是否有效,我会让你知道。但是谢谢你,我明天会给你回复结果,谢谢。请记住,它会处理所有扩展名为.csv的文件。你可能想删除它们或将它们的扩展名改为.old。我测试过了,是的,它可以工作,但只有p问题是要抓取所有的cvs文件,我想我喜欢你以前的做法,你可以通过文件名当前日期抓取,因为每个cvs都添加到文件夹中,总是显示当前日期,例如今天的201707260600060843.csv,然后只抓取其中一个,排除其他的,你能将其添加到你的scr吗ipt?因为我不需要手动删除csv文件,因为我每天都会将cvs文件发送到同一个文件夹。在更好地检查脚本后,这应该可以解决我的问题。谢谢。好的。我添加了新的RegExp()函数,以便以编程方式注入当前日期。我尚未测试它,因此如果您有问题,请告诉我。同样,它将采用以当前日期开头的任何csv格式:“yyyyMMdd”。