0
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

[GAS]Googleドライブ内のファイル複製・権限変更・共有リンク取得・ファイル削除

Posted at

はじめに

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

公式ドキュメント
https://developers.google.com/apps-script/reference/drive/file?hl=ja#setsharingaccesstype,-permissiontype

// 範囲:リンクを知っている全員 かつ 権限:閲覧者 の場合
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) メソッドを用いる。ゴミ箱に移動されるだけで、完全削除ではないので注意。

  • trashedtrueを指定して削除する

公式ドキュメント
https://developers.google.com/apps-script/reference/drive/file?hl=ja#settrashedtrashed

file.setTrashed(true);
0
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?