2016-12-14 109 views
0

我正在嘗試編寫腳本來獲取雲端硬盤中特定但動態的Google文檔的網址。 Google文檔每週二創建,其日期在Google文檔標題末尾。在雲端硬盤中查找特定的Google文檔

「TypeError:無法在對象FileIterator中找到函數getUrl。」錯誤顯示在行var agendaURL = file.getUrl();。不知道如何調試。

var ssUrl = 'LINK BUFFERED'; 
    var sheetName = 'SHEET1'; // name of sheet to use 
    var rangeName = 'C30'; // range of values to include 
    var dateRange = SpreadsheetApp.openByUrl(ssUrl) 
           .getSheetByName(sheetName) 
           .getRange(rangeName) 
           .getValues(); 


    // NEED TO find how to find file by name below! 
    var file = DriveApp.getFilesByName("Weekly Agenda | " +dateRange); 
    var agendaURL = file.getUrl(); 

回答

1

這是因爲您需要遍歷所有滿足搜索條件的文件。解決方案在這裏:https://developers.google.com/apps-script/reference/drive/drive-app

var files = DriveApp.getFilesByName("Weekly Agenda | " +dateRange); 
    while (files.hasNext()) { 
     var file = files.next(); 
     var agendaURL = file.getUrl(); 
     return agendaURL //for first one, or you can return each one, push to an array, etc... 
    } 
+0

utphx的答案爲我工作。 至於K. Tanaike,由於「文件」未定義,因此出現錯誤。 現在,我意識到可能有多個具有相同名稱的文件。如何在驅動器中文件所在的位置搜索一個特定的文件夾? –

+0

您可以在此處使用getFolderById(id):https://developers.google.com/apps-script/reference/drive/drive-app#getFolderById(String)。如果遇到麻煩,讓我知道,我進一步幫助 – utphx

+0

非常好!這現在起作用。 '//查找本週的每週議程。 var folder = DriveApp.getFolderById(「ID BUFFERED」) var files = folder.getFilesByName(「Weekly Agenda |」+ dateRange); var file = files.next(); var agendaURL = file.getUrl(); ' –

0

DriveApp.getFilesByName()得到的值是FileIterator。所以有必要從該值中檢索文件名如下。

var filename = "Weekly Agenda | " + dateRange; 
var file = DriveApp.getFilesByName(filename); 
while (file.hasNext()) { 
    var file = files.next(); 
    if (file.getName() == filename) { 
    var agendaURL = file.getUrl(); 
    } 
} 
相關問題