2016-12-14 7 views
0

Я пытаюсь написать сценарий, чтобы получить URL-адрес определенного, но динамического документа Google на Диске. Документ Google создается каждый вторник со своей датой в конце заголовка Документа Google.Найти документ Google на Диске

"TypeError: Невозможно найти функцию getUrl в объекте FileIterator." ошибка отображается в строке 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(); 
    } 
}