2017-08-04 21 views
0

これは私のコードで、ポイントは、フォルダIDを渡し、それはそのフォルダ内の指定されたファイル名のすべてのオカレンスをログに記録することです:このコードが実行されるとGoogle ScriptのgetFolderbyIdがエラーなしで変数を受け入れないのはなぜですか?

function SearchFiles(SourceID) 
{ 
    var source = DriveApp.getFolderById(SourceID); 
    var searchFor ='title contains "Desired File Name"'; 
    var names =[]; 
    var Dates=[]; 
    var files = source.searchFiles(searchFor); 
    while(files.hasNext()) 
    { 
    var file = files.next(); 
    var date = file.getDateCreated(); 
    Dates.push(date); 
    var name = file.getName(); 
    names.push(name); 
    } 

    for (var i=0;i<names.length;i++) 
    { 
    Logger.log(names[i]); 
    Logger.log(Dates[i]); 
    } 
} 

SearchFiles("ID Here"); 

問題がある、私が取得エラー "指定されたIDを持つアイテムが見つかりませんでした。または、そのIDにアクセスする権限がありません。" IDが正しいことと正しいアクセス権があることを確認したにもかかわらず、しかし、代わりに正しいIDを変数の代わりにgetFolderById関数に直接入れると、エラーなしで正しく動作します。変数を使用できない原因は何ですか?

+1

'getFolderById()'メソッドがあることをIDが必要です文字列。関数が整数のIDを受け取っている場合、エラーが発生する可能性があります。 'Logger.log( 'typeof SourceID:' + typeof SourceID)'コード行を追加し、コードを実行してから、ログを表示します。 SourceID変数が 'string'データ型でない場合、それが問題です。 –

答えて

1

あなたはどの機能を実行していますか?私は実行をクリックすると、SearchFiles関数を実行していると思います。別の関数にSearchFiles機能を呼び出し、以下のようにその機能を実行します。

function myFunction() { 
    SearchFiles("Folder ID"); 
} 

function SearchFiles(SourceID) 
{ 
    var source = DriveApp.getFolderById(SourceID); 
    var searchFor ='title contains "Desired File Name"'; 
    var names =[]; 
    var Dates=[]; 
    var files = source.searchFiles(searchFor); 
    while(files.hasNext()) 
    { 
    var file = files.next(); 
    var date = file.getDateCreated(); 
    Dates.push(date); 
    var name = file.getName(); 
    names.push(name); 
    } 

    for (var i=0;i<names.length;i++) 
    { 
    Logger.log(names[i]); 
    Logger.log(Dates[i]); 
    } 
} 

実行myFunctionと期待通りに動作するはずです:

enter image description here

+0

それは完璧に動作します、ありがとう!私はそれを下に置くことはそれのために働くだろうと思ったが、私はそうは思わない。 –

関連する問題