searchFiles と searchFoldersの実行について

1,652 views
Skip to first unread message

backy0175 .

unread,
May 19, 2014, 12:05:29 PM5/19/14
to google-app...@googlegroups.com
こんにちは。
皆様のお知恵を拝借したくて投稿させていただきます。

DriveApp
クラスの searchFiles と searchFolders で自分が保有するファイルとフォルダを検索できるようになっています。
https://developers.google.com/apps-script/reference/drive/drive-app#searchFiles%28String%29
https://developers.google.com/apps-script/reference/drive/drive-app#searchFolders%28String%29

検索結果をスプレッドシートに表示してみたくてチャレンジしているのですが、
この2つのメソッドを使用しているカスタム関数をスクリプトエディタ上で実行すると正常に動作します。
(1回目の実行時にスクリプト実行の承認をしている)
しかし、スプレッドシートのセルからカスタム関数を呼び出すと「承認が必要です」ということでエラーになります。

新しいスプレッドシートと古いスプレッドシートの両方で試してみましたが、どちらもスクリプトエディタ上の実行ではOKで
スプレッドシートから呼び出すとエラーになります。

スプレッドシートからの呼び出しで、なにか見落としていることはないでしょうか?

試しているコードは以下の通りです。
-------------------------------------------------------------------
function myFindFiles(keyword) {

var values = new Array();
values.push(["title", "Owner", "Last Updated", "URL"]);

var files = DriveApp.searchFiles('title contains "' + keyword + '"');
if (files) {
while (files.hasNext()) {
var file = files.next();
var value = new Array();

value.push(file.getName());
value.push(file.getOwner());
value.push(file.getLastUpdated());
value.push(file.getUrl());

values.push(value);

Logger.log(file.getName());
}
}

var folders = DriveApp.searchFolders('title contains "' + keyword + '"');
if (folders) {
while (folders.hasNext()) {
var folder = folders.next();
var value = new Array();

value.push(folder.getName());
value.push("");
value.push(folder.getLastUpdated());
value.push(folder.getUrl());

values.push(value);

Logger.log(folder.getName());
}
}

return values;

}

function test() {
myFindFiles("test");
}

backy0175 .

unread,
May 19, 2014, 12:09:27 PM5/19/14
to google-app...@googlegroups.com
しかし、スプレッドシートのセルからカスタム関数を呼び出すと「承認が必要です」ということでエラーになります。

正確には「Error: searchFiles を呼び出す権限がありません」となります。

wezardnet

unread,
May 20, 2014, 2:28:52 AM5/20/14
to google-app...@googlegroups.com
こんにちは。wezardnetと申します。

soundTricker さんの記事が参考になります。
この記事の終わりの方に独自関数の制限について記載されています。
おそらく、この制限に当たるため、「権限がありません」と言われてしまう気がします。

カスタム関数から呼び出すのではなく、ダイアログで検索キーワードを入力させて、
スプレッドシートに書き出すような仕組みの方が良いかも知れませんね。



2014年5月20日火曜日 1時09分27秒 UTC+9 backy0175 .:

backy0175 .

unread,
May 20, 2014, 7:17:23 AM5/20/14
to google-app...@googlegroups.com
wezardnetさん、ご助言ありがとうございました。

セルから呼び出したカスタム関数にそのような制限があるとは気が付かずにいましたので大変たすかりました。
おかげさまで、自分が持っているファイル/フォルダの検索結果をスプレッドシートに展開できるようになりました。

スクリプトの内容については Googleプロダクトフォーラムの Googleドライブフォーラムに投稿しましたので、ご興味があれば参照なさってください。

Googleプロダクトフォーラム - Googleドライブ

「Googleドライブの検索結果について」
https://productforums.google.com/d/topic/docs-ja/DiRmLP_X6iQ/discussion
Reply all
Reply to author
Forward
0 new messages