2014-09-25 64 views
0

我正在使用importFromCSV脚本,它在第一次运行良好,但我在脚本编辑器中得到了DocsList.getFiles()已被弃用的警告,应该找到替代方法。我试图直接用DriveApp.getFiles()换出,但是现在脚本超时了。DriveApp.getFiles()是否与DocsList.getFiles()等效?

DriveApp.getFiles()是否与DocsList.getFiles()不可互换?如果不是,我应该使用什么?还是有什么我失踪导致超时?

function importFromCSV() { 
    var fileName = "0B2n-RwpLExXnaXRBWG1aT3NLbm8"; 

    var files = DocsList.getFiles(); 
    var csvFile = ""; 

    for (var i = 0; i < files.length; i++) { 
    if (files[i].getId() == fileName) { 
     csvFile = files[i].getContentAsString(); 
     break; 
    } 
    } 
    var csvData = CSVToArray(csvFile, ","); 
    var ss = SpreadsheetApp.getActiveSpreadsheet(); 
    var sheet = ss.getActiveSheet(); 
    for (var i = 0; i < csvData.length; i++) { 
    sheet.getRange(i+1, 1, 1, csvData[i].length).setValues(new Array(csvData[i])); 
    } 
} 

回答

1

简短的回答是没有

而DriveApp返回file iterator已超出DocsList返回文件的数组。见documentation here

但是,当我看到你的代码,你不拿到文件,但使用ID ...所以你可以简化使用DriveApp.getFileById('0B2n-RwpLExXnaXRBWG1aT3NLbm8')你的代码,将立即返回正确的文件不反复或循环...

+0

谢谢塞尔。是的,DriveApp.getFileId可以返回文件名。然而,这并不适用于getContentAsString(),它期望一些其他类型的返回。循环后返回的文件[i]仅在记录器中显示为“文件”。在使用getContentAsString()之前,是否需要在DriveApp.getFileId的结果上运行其他一些过程? – 2014-09-26 01:31:13

相关问题