2017-08-07 80 views
1

我试图从文件夹中的所有电子表格的特定单元格中获取所有文本。我目前的问题是我只能读取它们作为文件类型,它不允许我访问getRange()函数。在Google应用程序脚本中读取多个电子表格

这是我的代码到目前为止。

function createLog() { 

    var folder = DriveApp.getFolderById("id#");//not placing actual id for privacy 

    var contents = folder.getFiles(); 

    var data; //array for relevant text 

    var file; 

    var d = new Date(); 

    var log = SpreadsheetApp.create("Events log "+d.getMonth()+"/"+d.getDay()); 



while(contents.hasNext()) { 

    file = contents.next(); 

    file.getRange("A6");//error is here because it is a file type not a spreadsheet 



    } 


    for(var i =0; i<contents.length;i++){ 

log.getRange(0,i).setValue(data[i]); 

    } 

} 

回答

1

卡梅隆的回答是正确的,但我建议打开由ID来代替,因为在谷歌驱动许多文件名的电子表格可以具有相同的名称... 下面是一个简化的演示代码来测试的想法和一些意见,以突出什么需要调整

function createLog() { 
    var folder = DriveApp.getFolderById("0B3###############ZMDQ");//not placing actual id for privacy 
    var contents = folder.getFilesByType(MimeType.GOOGLE_SHEETS); 
    var data; //array for relevant text 
    var fileID,file,sheet; 
    var data = []; 
    var d = new Date(); 
    var log = SpreadsheetApp.create("Events log "+d.getMonth()+"/"+d.getDay()); 

    while(contents.hasNext()) { 
    file = contents.next(); 
    Logger.log('Sheet Name = '+file.getName()); 
    fileID = file.getId(); 
    sheet = SpreadsheetApp.openById(fileID).getSheets()[0];// this will get the first sheet in the spreadsheet, adapt to your needs 
    data.push([sheet.getRange("A6").getValue()]);// add a condition before this line to get only the data you want 
    } 
    log.getActiveSheet().getRange(1,1,data.length, data[0].length).setValues(data); 
} 
相关问题