2014-09-25 86 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

相關問題