2016-09-14 6 views
0

Google 드라이브의 폴더에 여러 개의 스프레드 시트가 있습니다. 이름 중 하나를 함수에 전달하여 ID 또는 URL을 얻는 방법은 무엇입니까?스프레드 시트 이름에서 스프레드 시트 ID 또는 URL 받기

DriveApp을 사용하여 파일을 가져올 수 있지만 그 ID를 가져 오는 방법을 알지 못합니다.

function getFile(name) 
{ 
    var folder = DriveApp.getFolderById('id'); 
    var file = folder.getFilesByName(name); 
    //get file id 
} 

DriveApp 또는 SpreadsheetApp를 사용하여 ID 또는 URL을 가져 오는 방법이 있습니까?

답변

1

folder.getFilesByName(name); 잠재적으로 하나 개 이상의 파일을 검색 명령은 (이이 이름을 말할 - 그것을 대해서 getFile ) 그래서 당신에게 당신이 while 루프으로 분석 할 필요가 파일 반복자을 제공합니다.
당신이이 이름을 가진 적어도 하나 개의 파일이 있음을 확신하는 경우,이 같은 지저분한 코드로 루프를 방지 할 수 있습니다
var file = folder.getFilesByName(name).next();
다음으로 ID를 검색 :
var id = file.getId()

- 편집 :
파일을 검색 할 수 있는지 확실하지 않은 경우 (파일 이름이 존재하지 않거나 이름이 ....) 모르는 경우 파일 반복기의 결과를 확인해야합니다 .
var file = folder.getFilesByName(name);
작성하는 것을 선호 : 대신 작성

var files = folder.getFilesByName(name); // you could have zero or more than one file
을 그리고 당신이 할 수있는 동안 해당 이름을 가진 두 개 이상의 파일이 믿는 경우 루프 :

var out = []; 
while(files.hasNext()) { 
    var file = files.next(); 
    out.push(file.getId()); 
    Logger.log(file.getId()); 
} 
return out; 

가 또는 파일이 하나 또는 0 인 경우 간단한 작업 만 수행하면됩니다.

if (files.hasNext()) { 
    var file = files.next(); 
    Logger.log(file.getId()); 
    return file.getIt(); // eventually 
} 
else { 
    Logger.log("there is no file with that name"); 
    return "no id"; // eventually 
} 
+0

'.next()'와'var id = file.getId()'를 추가 할 때'다음 객체를 검색 할 수 없습니다 : 반복기가 끝났습니다. '라는 메시지가 나타납니다. while 루프는 어떻게 생겼을까요? 'while (file.hasNext()) {파일 아이디 가져 오기}'? – user4411473

+0

그 이름을 가진 파일이 없음을 의미합니다 (0 결과). 내가 할 일을 보여주기 위해 소식을 업데이트 할 것입니다. – Harold