Google apps script 为什么我不能使用FileIterator从文件中获取数据?
我正在使用这个代码。。。它返回我正在引用的文件夹中正确数量的工作表,但只返回“undefined”,而不是每个工作表中的值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
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, ]);
}}
使用运行代码,观察变量类型和值。这将有助于找出问题所在。谢谢!我现在可以用了。。。但它运行得非常慢,有时会因为“服务错误:电子表格”而停止。有没有更快的方法从多个文件调用数据?也许我应该“回答”这个问题,并问一个与之相关的新问题?与其从图纸中一次提取一个值,不如将它们提取为数组,并从数组中分配值。如果你需要更多的信息,请发布一个新的问题和修改后的代码如果你找到了答案,你可以并且应该回答你自己的问题。总比不回答好。