Google脚本将多个电子表格中的数据收集到1个电子表格中

时间:2018-12-15 11:19:55

标签: google-apps-script collections google-sheets spreadsheet

我在一个文件夹中有184个审核表。我想在每个工作表中引用1个单元格,然后将它们带回到一个主电子表格中。

我有相反的代码,该代码向文件夹中的每个工作表发送一个值并将其更改为所需的值。所以本质上,我想做下面脚本的相反操作。

function getdata() {


 var files = DriveApp.getFolderById("1gbA2JI1DYNku7SQPaCq1Qk27hnbimPag").getFiles()
while (files.hasNext()) {
  var file = files.next();
  var shoot = SpreadsheetApp.openById(file.getId());

  var sourcesheet = SpreadsheetApp.getActive().getSheetByName("Jan");
  var sourcerange = sourcesheet.getRange('A3');
  var sourcevalues = sourcerange.getValues();

var destsheet = shoot.getSheetByName('Front Sheet'); 
var destrange = destsheet.getRange('B5'); 
destrange.setValues(sourcevalues);         
 }


}

1 个答案:

答案 0 :(得分:0)

您的示例代码似乎与您的解释不符,但是我认为我有基本的想法,因此我自己编写了一些所需的详细信息。希望这可以帮助。我包括了文件名,ID和“ A3”值。您可以选择根据需要进行修改。

function getdata(month) {
  var monthA=["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"];
  var date=new Date();
  var mss=SpreadsheetApp.getActive();
  var ms=mss.getSheetByName("Master Sheet");
  var vObj={name:[],id:[],value:[]};
  var files = DriveApp.getFolderById("1gbA2JI1DYNku7SQPaCq1Qk27hnbimPag").getFilesByType(MimeType.GOOGLE_SHEETS);
  while (files.hasNext()) {
    var file = files.next();
    var fid=file.getId();
    var ss = SpreadsheetApp.openById(fid);
    var sh = ss.getSheetByName(monthA[date.getMonth()]);
    var rg = sh.getRange('A3');
    vObj.name.push(file.getName());
    vObj.id.push(fid);
    vObj.value.push(rg.getValue());
    vObj['month']=monthA[date.getMonth()];
  }
  vObj.id.splice(0,0,'ids');
  ms.appendRow(vObj.id);
  vObj.name.splice(0,0,vObj.month);
  ms.appendRow(vObj.name); 
  vObj.value.splice(0,0,'values');
  ms.appendRow(vObj.value)
}