Aフォルダ(a,b,c,dと共有)内のBファイルに対してa,bのみの共有設定としたい。
- Aの共有設定はメールアドレスで設定されている
2. メールアドレスはGoogleAppsアカウントではない
3. ユーザーは全て編集者権限(Editor)
上記にてBファイルは親フォルダ(A)の共有設定が引き継がれるので、要求を満たすためにはc,dを共有から外す必要がある。
手動での上記設定は可能であることは確認済みで、これをGASにて実行したい。
Javascript
1var B = DriveApp.getFileById(__BファイルのID__); 2B.removeEditor(__Email of c__); 3B.removeEditor(__Email of d__);
上記はコードの極例ですが、実行後共有状態はa,b,c,dと共有のままで、c,dを外せません。
そもそもGASから要求を満たすことはできないということなのでしょうか。
A直下にBの他、C,D,E...とあり、Bのみ部分共有したいといった状況です。
ご助言、よろしくお願いいたします。
[追記]
- 上記問題を確認するため、以下の様な簡単な検証を実施。
[検証用構成] Aフォルダ > Bファイル ※いずれも共有設定なし
[検証設定]
a. Aに対し編集者ユーザー(x、y、z)を追加(共有設定)
b. Aの編集者ユーザー(z)を削除
c. Aの編集者ユーザー(x、y)を削除(共有解除)
d. 一度共有設定を初期状態に戻し、Bに対し編集者ユーザー(x、y、z)を追加
e. Bの編集者ユーザー(z)を削除
f. の編集者ユーザー(x、y)を削除
※a実行後にb、b実行後にc、という流れで行いました。
[結果]
a. Bに継承
b. Bに継承
c. Bに継承(共有解除)
d. A(共有解除)、B(x、y、z)
e. A(共有解除)、B(x、y、z)
f. A(共有解除)、B(共有解除)
- 上記よりGASによる共有設定処理、解除処理に問題がないことを確認。
その上で、GASの制限事項と考えられる問題について以下の設定にて追検証しました。
[検証用構成] Aフォルダ > Bファイル ※A(x、y)、B(x、y)
[追検証設定]
g. Bに対し編集者ユーザー(z)を追加
h. Aの編集者ユーザー(x)を削除
i. Aに対し編集者ユーザー(x)を追加
j. Bの編集者ユーザー(y)を削除
k. Bの編集者ユーザー(z)を削除
※新たにAフォルダと同階層にCフォルダを作成(zと共有)。
l. BをDとしてCへコピー
m. BをCへ移動
[結果]
g. A(x、y)、B(x、y、z) 共有設定反映
h. A(y)、B(y、z) Aの設定がBに影響
i. A(x、y)、B(x、y、z) Aの設定がBに影響
j. A(x、y)、B(x、y、z) 処理が反映されない(エラーなし)
k. A(x、y)、B(x、y) 共有設定反映
l. A(x、y)、B(x、y)、C(z)、D(z)コピー先の親フォルダの設定を継承
m. A(x、y)、B(z)、C(z) コピー先の親フォルダの設定を継承
- 1.及び2.の結果より、以下のことが現状の結論として導かれます。
・親フォルダの共有解除状態(Private)を含む、共有グループ外のユーザー追加は可能。
・親フォルダが共有設定されている場合、共有グループに含まれるユーザーを削除できない。
・コピー及び移動(ムーブ)でも、元の共有設定は維持されない。
※GASの公式リファレンスやWEB上での情報など、時間をかけて探してみましたが
これら共有設定に関する内容や制限事項として明記されている情報に当たることができませんでした。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。