如何将数据从google Drive文件夹中的CSV添加到google电子表格中的特定工作表中?

如何将数据从google Drive文件夹中的CSV添加到google电子表格中的特定工作表中?,csv,google-apps-script,Csv,Google Apps Script,企业需要什么?数据来自我需要通过zapier更新到mailchimp的一些联系人 我正在尝试添加从google drive中特定文件夹导入的CSV数据。我们应该将这些数据添加到谷歌电子表格中某个表格的最后一行 我想用谷歌脚本来做 为什么需要添加到最后一行,因为这会触发zapier中的函数来更新此数据 我从其他帖子中得到了以下内容,但这只创建了一个新的工作表,我需要的是将数据附加到一个特定的工作表中 function importData() {

企业需要什么?数据来自我需要通过zapier更新到mailchimp的一些联系人

我正在尝试添加从google drive中特定文件夹导入的CSV数据。我们应该将这些数据添加到谷歌电子表格中某个表格的最后一行

我想用谷歌脚本来做

为什么需要添加到最后一行,因为这会触发zapier中的函数来更新此数据

我从其他帖子中得到了以下内容,但这只创建了一个新的工作表,我需要的是将数据附加到一个特定的工作表中

                    function importData() {
              var fSource = DriveApp.getFolderById("0B1FOmGiNuwVNMU1SU29kc2dGSkE"); // reports_folder_id = id of folder where csv reports are saved
              var fi = fSource.getFilesByName('plancomercial.csv'); // latest report file
              var ss = SpreadsheetApp.openById("1w7iW_DKJPZEcy9C8N9iskh_GpCmmL6N9PiZNSpXtrcc"); // data_sheet_id = id of spreadsheet that holds the data to be updated with new report data
              if ( fi.hasNext() ) { // proceed if "plancomercial.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 dateObj = new Date();
            var month = dateObj.getUTCMonth() + 1; //months from 1-12
            var day = dateObj.getUTCDate();
            var year = dateObj.getUTCFullYear();
            var newdate = year + "/" + month + "/" + day; //formating date to be stamped into the sheet label

                var newsheet = ss.insertSheet('Ciclo '+ newdate,0); // create a 'Ciclo + formated date' sheet to store imported data
                // loop through csv data array and insert (append) as rows into 'Ciclo + formated date' 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 'Ciclo + formated date' 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("plancomercial-"+(new Date().toString())+".csv");
              }
            };


            // http://www.bennadel.com/blog/1504-Ask-Ben-Parsing-CSV-Strings-With-Javascript-Exec-Regular-Expression-Command.htm
            // This will parse a delimited string into an array of
            // arrays. The default delimiter is the comma, but this
            // can be overriden in the second argument.

            function CSVToArray( strData, strDelimiter ) {
              // Check to see if the delimiter is defined. If not,
              // then default to COMMA.
              strDelimiter = (strDelimiter || ",");

              // Create a regular expression to parse the CSV values.
              var objPattern = new RegExp(
                (
                  // Delimiters.
                  "(\\" + strDelimiter + "|\\r?\\n|\\r|^)" +

                  // Quoted fields.
                  "(?:\"([^\"]*(?:\"\"[^\"]*)*)\"|" +

                  // Standard fields.
                  "([^\"\\" + strDelimiter + "\\r\\n]*))"
                ),
                "gi"
              );

              // Create an array to hold our data. Give the array
              // a default empty first row.
              var arrData = [[]];

              // Create an array to hold our individual pattern
              // matching groups.
              var arrMatches = null;

              // Keep looping over the regular expression matches
              // until we can no longer find a match.
              while (arrMatches = objPattern.exec( strData )){

                // Get the delimiter that was found.
                var strMatchedDelimiter = arrMatches[ 1 ];

                // Check to see if the given delimiter has a length
                // (is not the start of string) and if it matches
                // field delimiter. If id does not, then we know
                // that this delimiter is a row delimiter.
                if (
                  strMatchedDelimiter.length &&
                  (strMatchedDelimiter != strDelimiter)
                ){

                  // Since we have reached a new row of data,
                  // add an empty row to our data array.
                  arrData.push( [] );

                }

                // Now that we have our delimiter out of the way,
                // let's check to see which kind of value we
                // captured (quoted or unquoted).
                if (arrMatches[ 2 ]){

                  // We found a quoted value. When we capture
                  // this value, unescape any double quotes.
                  var strMatchedValue = arrMatches[ 2 ].replace(
                    new RegExp( "\"\"", "g" ),
                    "\""
                  );

                } else {

                  // We found a non-quoted value.
                  var strMatchedValue = arrMatches[ 3 ];

                }

                // Now that we have our value string, let's add
                // it to the data array.
                arrData[ arrData.length - 1 ].push( strMatchedValue );
              }

              // Return the parsed data.
              return( arrData );
            };        
函数导入数据(){
var fSource=DriveApp.getFolderById(“0B1FOmGiNuwVNMU1SU29kc2dGSkE”);//报告\u文件夹\u id=csv报告保存文件夹的id
var fi=fSource.getFilesByName('plancomercial.csv');//最新报告文件
var ss=SpreadsheetApp.openById(“1w7iW_DKJPZEcy9C8N9iskh_GpCmmL6N9PiZNSpXtrcc”);//数据_sheet_id=保存要用新报告数据更新的数据的电子表格的id
如果(fi.hasNext()){//如果报告文件夹中存在“plancommercial.csv”文件,则继续
var file=fi.next();
var csv=file.getBlob().getDataAsString();
var csvData=CSVToArray(csv);//有关CSVToArray函数,请参见下文
var dateObj=新日期();
var month=dateObj.getUTCMonth()+1;//从1到12个月
var day=dateObj.getUTCDate();
var year=dateObj.getUTCFullYear();
var newdate=year+“/”+month+“/”+day;//要压印在图纸标签上的格式化日期
var newsheet=ss.insertSheet('Ciclo'+newdate,0);//创建一个'Ciclo+格式化日期'表来存储导入的数据
//循环浏览csv数据数组,并作为行插入(追加)到“Ciclo+格式化日期”表中

对于(var i=0,lenCsv=csvData.length;i

对于“setValues”,可以将多维数组直接导入电子表格

对于“getRange”,4个参数是行(坐标 ),列(坐标) ),numRows(数据数组的数量(大小)和numColumns(数据数组中一个元素的数量(大小))


下面的脚本怎么样

对于“setValues”,可以将多维数组直接导入电子表格

对于“getRange”,4个参数是行(坐标 ),列(坐标) ),numRows(数据数组的数量(大小)和numColumns(数据数组中一个元素的数量(大小))

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

  while (fSource.hasNext()) {
    var file = fSource.next();
    if (file.getName() == csvfile) {
      var dateObj = new Date();
      var month = dateObj.getUTCMonth() + 1; //months from 1-12
      var day = dateObj.getUTCDate();
      var year = dateObj.getUTCFullYear();
      var newdate = year + "/" + month + "/" + day; //formating date to be stamped into the sheet label
      var newsheet = ss.insertSheet('Ciclo '+ newdate,0); // create a 'Ciclo + formated date' sheet to store imported data
      var csv = file.getBlob().getDataAsString();
      var csvData = CSVToArray(csv); // see below for CSVToArray function
      newsheet.getRange(1,1,csvData.length,csvData[0].length).setValues(csvData);
      /*
      ** report data is now in 'Ciclo + formated date' 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("plancomercial-"+(new Date().toString())+".csv");
    }
  }
}