Google App EngineからのSpreadSheetの権限変更について

  • このエントリーをはてなブックマークに追加

ご注意

この記事は 2014年3月24日 に書かれたものです。内容が古い可能性がありますのでご注意ください。

Google App Engine(以下GAE)からGoogleDocsのSpreadSheetを操作することになりましたので、権限周りについて少し調べてみました。

結論として、Google Data APIを使えば、ひと通りは手作業と同じようにSpreadSheetの操作はできるようです。

検証結果を簡単にまとめてみましたので、どうぞご参考までに読んでください。

 

<検証結果>

・使用したAPI : Google Documents List Data API version3.0

検証内容 Google Data API 手作業
オーナー権限の移譲
既存ユーザーの権限の変更
Spreadsheetへのユーザーの追加
既存ユーザーの削除

1:オーナー権限の委譲 & Spreadsheetへのユーザーの追加

DocsServiceクラスのInsertメソッド、もしくはAclEntryクラスのUpdateメソッドを使用します。

オーナー権限を変更した場合、前オーナーは自動で編集権限に変更になり、新オーナーに権限を委譲したことを知らせるメールが送られます。

コード例

// Scopeに新オーナーのメールアドレスと、タイプをSetします。
aclEntry.setScope(new AclScope(AclScope.Type.USER, "newOwner@addres.co.jp"));
// 追加する権限にオーナーを指定します。
aclEntry.setRole(new AclRole("owner"));
// entryオブジェクトは権限を追加するドキュメントのDocumentListEntryクラスです。
docsService.insert(new URL(entry.getAclFeedLink().getHref()), aclEntry);

2:既存ユーザーの権限の変更

DocsServiceクラスのInsertメソッド、もしくはAclEntryクラスのUpdateメソッドを使用します。
コード例

aclEntry.setRole(new AclRole("reader"));
AclEntry resulAclEntry = aclEntry.update();
// docsService.update(new URL(entry.getAclFeedLink().getHref()), aclEntry);

既存ユーザの削除

DocsServiceクラスのDeleteメソッド、もしくはAclEntryクラスのDeleteメソッドを使用します。
コード例

aclEntry.delete();
// docsService.delete(new URL(entry.getAclFeedLink().getHref()), aclEntry);

Goog Data APIのページで探していたときに「Google Spreadsheets Data API」が目に入りましたが、こちらはどうやらSpreadsheetの内容を編集する時に使うようです。名前に騙されました。
Google Documents List Data API では権限の変更以外にもSpreadsheetの新規作成も行えるので、GAEからGoogle Docsを操作する際には活躍すると思います。

  • このエントリーをはてなブックマークに追加

Google のクラウドサービスについてもっと詳しく知りたい、直接話が聞いてみたいという方のために、クラウドエースでは無料相談会を実施しております。お申し込みは下記ボタンより承っておりますので、この機会にぜひ弊社をご利用いただければと思います。

無料相談会のお申込みはこちら