こんにちは。
皆様のお知恵を拝借したくて投稿させていただきます。
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");
}
しかし、スプレッドシートのセルからカスタム関数を呼び出すと「承認が必要です」ということでエラーになります。