#110 共有ドライブの組織部門を取得するときに(2)
先日の ↓ の記事の続きです。 ※元の記事と同様に、管理者向けの内容となっています。
2022年 7月から Google Workspace for Educationのトレージポリシーが変更され、無償のエディションである Google Workspace for Education Fundamentals では、組織全体で 100TB のストレージ領域に制限されるようになりました。
わたしが所属している組織でも、利活用が進んでストレージ容量が枯渇してしまう前に、過度な使用を抑制するために制限を設けようとしています。
その一環として、組織内で作成されている共有ドライブを把握するために、冒頭の ↑ の記事のようなプログラムを作成していました。
組織内でどのような共有ドライブが作成されているのかを、GAS のプログラムでチェックして、管理・把握できるようにしたいと考えたのですが…
共有ドライブの状況を取得する API にクセがあるようで、悩まされたので記録のためにメモしておきます。
共有ドライブの情報を扱うクラス Drive
以下 URL で説明されているクラス Drive で、共有ドライブの情報を扱います。
この情報は get や list によって得られますが、list と get のメソッドによって挙動が少し異なっているのです…😖
挙動の異なる部分
list と get で挙動の異なる部分は、冒頭の記事でも触れた共有ドライブの組織部門についてです。
クラスの中に orgUnitId というフィールド(メンバー)が用意されていて、ここに当該共有ドライブに設定されている組織部門の ID が設定されているはずなのですが、list で取得したクラスには設定されているものの、get で取得したクラスには orgUnitId が存在していないのです。
上記のスクリーンショットのように、orgUnitId は list でのみ入力(設定)されると説明されているので、get で取得せず、list で q(query)によって抽出して単一の共有ドライブの情報を取得しようと考えました。
しかしながら、list の q では、指定可能な query は以下のように説明されています。
上記 URL の「共有ドライブ固有のクエリ用語」では、query の対象となる query_term が一覧になっていますが、共有ドライブを一意に示すための id を指定できません。 ※id で情報を取得するのなら、list ではなく、get を使えばいい、ということなのでしょう。
そのため、既に一覧にされた共有ドライブの情報を再取得する場合、一括して再取得するのであれば list を使って orgUnitId を得られるのですが、任意の一つの共有ドライブについて情報を再取得しようとした場合、get では orgUnitId を取得できないのです。 ※name だけでの q では、同名の共有ドライブが存在していた場合に、一意に特定できず、処理が継続できなくなる。
また、この orgUnitId は出力のみ可能なフィールドであるため、GAS のプログラムで共有ドライブに設定された組織部門を、プログラムで変更することができません。 ※組織部門の変更は、管理コンソールの UI で操作しなければなりません。
不都合に感じられる部分
試行錯誤した結果、
get では orgUnitId を取得できない
list でのみ orgUnitId を取得できるが、q(query)での絞り込みに id は使用できず、一意に共有ドライブを特定できない
GAS で利用できる API では orgUnitId の変更を行えない
GAS の API で更新可能なフィールドは限られている
といった部分が、使い勝手が悪いなと感じます。
この辺りは、冒頭のストレージポリシーの変更にともなって、あとから追加された部分なのだと思いますが、もう少し改善されるといいのですが…😖
ちなみに、こういった内容の GAS のプログラムは、あまり公開されていないため、集合知によって構成されている ChatGPT にお願いしても、的を得た回答は得られませんでした。😢
共有ドライブで使用しているストレージ容量は、作成した個人のストレージ容量として加算されるのではなく、組織の容量として加算されます。それ故に組織内で作成されている共有ドライブは、ある程度は管理しておかなければならないのでしょうが、提供されている API が前述のような状況では、いろいろと工夫しなければならなさそうです…
参考にしたサイト
以下のサイトに掲載されている情報を参考にさせていただきました。