三連休にGoogle Drive内のdocsファイルの権限を一括移譲するgasをいじった

なぜか世間様がシルバーウィークでウッキウキの土曜の朝に、なんの前触れも助走もなく、気づいたら朝ごはんも食べずに突如業務効率化の自由研究をスタートしていました

※本文の途中でがっかりイリュージョンみたいに書いてますが、先に言っときます。エクセルとかPSDとかpdfとかは残念ながら処理スルーされます。

主にこちらを参考に作業しました

[GAS] Google Drive の特定フォルダ配下のフォルダ・ファイルの権限を一括で移譲する|カメラのちプログラミング♥ところによりカフェ
https://4to.pics/article/post/98

用途としては

・後輩へのdocsファイルの権限委譲に!
・部署異動のときに同僚へパス!
・プロジェクトが運用フェーズに入ったときの担当変更に!
・退職して消えr…(ケフンケフン

などが考えられるかと〜

便利ポイントとしては


・アカウント一括じゃなくてディレクトリごと、ファイルごとにオーナー変更できる
・ディレクトリ配下を一括で変更できる

でしょうか

今回の作業は、多分、己の事務処理系ファイルを別アカウントに移行しようと思っていちいちポチポチする自分の未来予想図に一瞬でげんなり出来たのと、前職を退職するときにあまりのファイルの多さとプロジェクト数にどんどんびきびきどんびきした様がフラッシュバックし、朝から気分がレイニーブルーになったのが動機になっていたのかと。(自分でもよくわかりません)

最初はなぜかエラー続出した

おお〜素敵な先人がすでに!ありがとう!!!もうあるならコピペするだけでええや〜〜ん!とコピペして実行したら、、、止まっちゃった。。。
んんん?とおもったらどうやらある一定のファイルでエラーが出て処理が止まっているらしい。

あ、エクセルとかPSDとか、googleのサービスで作ったファイル以外はGASのサポート対象外で、権限委譲できないのね?

そっか、通常バックオフィスで、ドキュメントを管理共有しているならそもそもドキュメントだけを入れているのでPSDが〜フォントが〜エクセルが〜〜ってならないのね。。。
(扱うファイルが多岐にわたるWeb系エンジニアの宿命)

ってことで、対象のモノ以外を除外に

GoogleDrive関連でGASの処理対象となるファイル(のMIME Type)はこちら

Supported MIME Types  |  Drive REST API  |  Google Developers
https://developers.google.com/drive/api/v3/mime-types

対象にできるのは主にgoogleのドキュメント類だけっすね

Googleドライブのオーナー権限を譲渡・移動させる方法 | ムクッといこう

Googleドライブのオーナー権限を譲渡・移動させる方法

でけた!

主なコードいじった内容

//最終的にこれに
if(mime.match(/google-apps/)){
  insertPermission(_file.getId(), options);
  Logger.log("◎操作完了: " + _file);
}else{
  Logger.log("×スキップ: " + _file);
}

//※最初は闇雲にエラー出たやつをつっこんでた(あとでげんなりしてMIME一覧を調べたw
//     Logger.log("ファイルのMIMEタイプ: " + mime);
// if(mime != "application/vnd.ms-excel" && mime != "application/postscript" && mime != "application/pdf"){

その他参考にしたドキュメント

Class File  |  Apps Script  |  Google Developers
https://developers.google.com/apps-script/reference/drive/file#getMimeType()

GAS入門 – DriveAppクラスリファレンス
https://qiita.com/TakumaKawashiro/items/b32be642d05269e4b28f

Google Apps Scriptでログ出力

Google Apps Scriptでログ出力

JavaScriptの正規表現
http://www.openspc2.org/JavaScript/data/regexp.html

出来たやつ一応貼っときます(コピしてOKやけど、あくまで自己責任でつこてね)

スクリプト自分で作ったことなくても入りやすいようにいったんスプレッドシートにしてみました
(スプレッドシート以外にもっていっても動きます)

https://docs.google.com/spreadsheets/d/1nXqdxTaA5SUhnKJZlrhFp2M7K6C8e-EITNAZgNpDt4E/edit?usp=sharing

あ、でもメール来ないように・・・のところはきかなかったのかメール来てたな。
うーん。また時間出来たら見よう

じゃっ!

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください