はじめに
Google Apps ScriptでGoogleドライブ内のファイル操作をする方法を記載します。内容は以下の通りです。
- フォルダの取得、ファイルの取得
- ファイルの複製
- 権限の変更
- 共有リンクの取得
- ファイルの削除(ゴミ箱へ移動)
以下では、ファイル
操作として記載しますが、フォルダ
操作でも同じ記述の場合もあります。
【公式ドキュメント】
フォルダの取得、ファイルの取得
まずは、フォルダ中のフォルダやファイルの取得方法を記します。取得結果はイテレータで返されるので少し扱いが複雑です。
フォルダ内のフォルダの取得
ここでは、例としてフォルダ名を表示するコードを記します。
公式ドキュメント
https://developers.google.com/apps-script/reference/drive/drive-app?hl=ja#getfolders
var folder_id = '[フォルダのIDを取得しておく]'
var folder = DriveApp.getFolderById(folder_id); // フォルダIDでフォルダを取得
// フォルダ内のフォルダ一覧をイテレータで取得する
var folder_list = folder.getFolders();
// 例としてフォルダ名を表示する
while (folder_list.hasNext()) {
// 次のアイテムを取得する
var each_folder = folder_list.next();
// フォルダ名を取得する
var folder_name = each_folder.getName();
// 取得したフォルダ名を表示する
console.log(folder_name);
}
フォルダ内のファイルの取得
ここでは、例としてフォルダ内の、全てのフォルダの中にあるファイル名を表示するコードを記します。
公式ドキュメント
https://developers.google.com/apps-script/reference/drive/folder?hl=ja#getfiles
var folder_id = '[フォルダのIDを取得しておく]'
var folder = DriveApp.getFolderById(folder_id);
// フォルダ内のフォルダ一覧をイテレータで取得する
var folder_list = folder.getFolders();
// 先ほど同様、フォルダ内のフォルダを取得する
while (folder_list.hasNext()) {
// 次のアイテムを取得する
var each_folder = folder_list.next();
//フォルダ内のファイル一覧を取得する
var file_list = each_folder.getFiles();
// イテレータを展開していく
while (file_list.hasNext()) {
// 次のアイテムを取得する
var each_file = file_list.next();
// ファイル名を取得する
var file_name = flie_list.getName();
// 取得したフォルダ名を表示する
console.log(file_name);
}
ファイル複製
.makeCopy(name, destination)
メソッドを用いる。
-
name
:複製時のファイル名 -
destination
:複製先のフォルダ
公式ドキュメント
https://developers.google.com/apps-script/reference/drive/file?hl=ja#makecopyname,-destination
var target_file = '複製するファイル'
var file_name = `複製時のファイル名を指定する`; // 指定しないと「~ のコピー」が付加される
var destination = 'コピー先のフォルダ'; // 指定しないと複製元と同じフォルダに複製される
// 複製するだけ
target_file.makeCopy(file_name, destinaion);
// 複製したファイルを取得する場合
var file = target_file.makeCopy(file_name, destinaion);
権限の変更
.setSharing(accessType, permissionType)
メソッドを用いる。
-
accessType
:アクセス許可範囲を指定。詳細はこちら。-
ANYONE
ANYONE_WITH_LINK
DOMAIN
DOMAIN_WITH_LINK
PRIVATE
-
-
permissionType
:アクセス権限の種類を指定。詳細はこちら。-
VIEW
EDIT
COMMENT
OWNER
ORGANIZER
FILE_ORGANIZER
NONE
-
// 範囲:リンクを知っている全員 かつ 権限:閲覧者 の場合
file.setSharing(DriveApp.Access.ANYONE_WITH_LINK, DriveApp.Permission.VIEW);
// 範囲:リンクを知っている全員 かつ 権限:編集者 の場合
file.setSharing(DriveApp.Access.ANYONE_WITH_LINK, DriveApp.Permission.EDIT);
共有リンクの取得
.getUrl()
メソッドを用いる。
公式ドキュメント
https://developers.google.com/apps-script/reference/drive/file?hl=ja#geturl
var link = file.getUrl();
ファイル削除(ゴミ箱に移動)
.setTrashed(trashed)
メソッドを用いる。ゴミ箱に移動されるだけで、完全削除ではないので注意。
-
trashed
:true
を指定して削除する
公式ドキュメント
https://developers.google.com/apps-script/reference/drive/file?hl=ja#settrashedtrashed
file.setTrashed(true);