Google apps script 为什么我不能使用FileIterator从文件中获取数据?

Google apps script 为什么我不能使用FileIterator从文件中获取数据?,google-apps-script,Google Apps Script,我正在使用这个代码。。。它返回我正在引用的文件夹中正确数量的工作表,但只返回“undefined”,而不是每个工作表中的值 function onOpen() { var folder = DriveApp.getFolderById("paosdfpoasidjfosidj"); var file; var data; var sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("Base") sheet.clearCo

我正在使用这个代码。。。它返回我正在引用的文件夹中正确数量的工作表,但只返回“undefined”,而不是每个工作表中的值

function onOpen() {
 var folder = DriveApp.getFolderById("paosdfpoasidjfosidj");
var file;
var data;

var sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("Base")
sheet.clearContents();

var files = folder.getFiles();
while (files.hasNext()) {
var file = files.next();
var value1,value2,value3,value4,value5,value6,value7,value8,value9,value10,value11,value12;
 if (file.getMimeType=="GOOGLE_SHEETS")
 {
    var otherSheet=  SpreadsheetApp.open(file).getSheetByName("Project Overview");

  value1 = otherSheet.getRange('B4').getValue();
  value2 = otherSheet.getRange('B5').getValue();
  value3 = otherSheet.getRange('B3').getValue();
  value4 = otherSheet.getRange('B7').getValue();
  value5 = otherSheet.getRange('B8').getValue();
  value6 = otherSheet.getRange('B11').getValue();
  value7 = otherSheet.getRange('B6').getValue();
  value8 = otherSheet.getRange('B18').getValue();
  value9 = otherSheet.getRange('I4').getValue();
  value10 = otherSheet.getRange('I5').getValue();
  value11 = otherSheet.getRange('I6').getValue();
  value12 = otherSheet.getRange('I3').getValue();
var url = file.getUrl(); 

}
   else {
  value1 = null; value2 = null; value3 = null;value4 = null; value5 = null; value6 = null;value7 = null; value8 = null; value9 = null;value10 = null; value11 = null; value12 = null;value13 = null; value14 = null; value15 = null;value16 = null; value17 = null; value18 = null;value19 = null; value20 = null; value21 = null;value22 = null; value23 = null; value24 = null;value25 = null; value26 = null; value27 = null;value28 = null; value29 = null; value30 = null;value31 = null; value32 = null; value33 = null;value34 = null; value35 = null; value36 = null;
 }




  sheet.appendRow([url,value1,value2,value3,value4,value5,value6,value7,value8,value9,value10,value11, value12]);

}问题在于语法。我还切换并使用了一个数组,该数组使事情运行得更快,并且不经常调用.getRange。以下是工作代码:

function onOpen() {
var folder = DriveApp.getFolderById("09834j5209834nh57987");
var sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("Base")
sheet.clearContents();



 var files = folder.getFiles();
 while (files.hasNext()) {
 var file = files.next();


    var otherSheet= SpreadsheetApp.open(file).getSheetByName("Project Overview");

 var data = otherSheet.getRange("B3:I20").getValues().map(function(row){ return row[0];});

 var value1 = data[1,1].valueOf();
 var value2 = data[1,2].valueOf();
 var value3 = data[0,0].valueOf();




var url = file.getUrl(); 
var name = "Link to Sheet"; 
var semi = ";";  
var hyp = "=hyperlink(\"";
var quot = "\"";
var clos = ")";
var pp = hyp  + url + quot + semi + quot + name + quot + clos;



  sheet.appendRow([pp,value1, value2, value3, ]);
 }}

使用运行代码,观察变量类型和值。这将有助于找出问题所在。谢谢!我现在可以用了。。。但它运行得非常慢,有时会因为“服务错误:电子表格”而停止。有没有更快的方法从多个文件调用数据?也许我应该“回答”这个问题,并问一个与之相关的新问题?与其从图纸中一次提取一个值,不如将它们提取为数组,并从数组中分配值。如果你需要更多的信息,请发布一个新的问题和修改后的代码如果你找到了答案,你可以并且应该回答你自己的问题。总比不回答好。