Zend_Gdata_Gapps.xml 34 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902
  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <!-- Reviewed: no -->
  3. <!-- EN-Revision: 15103 -->
  4. <sect1 id="zend.gdata.gapps">
  5. <title>Google Apps Provisioning の使用法</title>
  6. <para>
  7. Google Apps はドメイン管理者向けのサービスで、Google の提供する
  8. メールやカレンダー、Docs &amp; Spreadsheets
  9. などをユーザに使用させることができます。
  10. Provisioning API は、
  11. これらのサービスをプログラム上から設定するためのインターフェイスです。
  12. 特に、この API を使用すると
  13. ユーザアカウントやニックネーム、メーリングリストなどの追加、取得、
  14. 更新、削除ができるようになります。
  15. </para>
  16. <para>
  17. このライブラリは Provisioning API バージョン 2.0 を実装しています。
  18. Provisioning API であなたのアカウントにアクセスできるようにするには、
  19. Google Apps コントロールパネル上で手動で有効にする必要があります。
  20. この機能を利用できるのは、特定の種別のアカウントだけに限られます。
  21. </para>
  22. <para>
  23. Google Apps Provisioning API の使用法や
  24. API にアクセスできるようにするための方法については <ulink
  25. url="http://code.google.com/apis/calendar/overview.html">Provisioning
  26. API V2.0 Reference</ulink> を参照ください。
  27. </para>
  28. <note>
  29. <title>認証</title>
  30. <para>
  31. Provisioning API は AuthSub による認証をサポートしておらず、
  32. 匿名でのアクセスはできません。すべての HTTP 接続は
  33. ClientAuth で認証を済ませている必要があります。
  34. </para>
  35. </note>
  36. <sect2 id="zend.gdata.gapps.domain">
  37. <title>現在のドメインの設定</title>
  38. <para>
  39. Provisioning API を使用するには、
  40. すべてのリクエスト URI で対象のドメインを指定する必要があります。
  41. 開発を楽に進めるために、この情報は Gapps
  42. サービスクラスとクエリクラスの両方で保持するようにしています。
  43. </para>
  44. <sect3 id="zend.gdata.gapps.domain.service">
  45. <title>サービスクラスへのドメインの設定</title>
  46. <para>
  47. リクエスト対象のドメインをサービスクラスに設定するには、
  48. <code>setDomain()</code> をコールするか、
  49. あるいはサービスクラスのインスタンスの作成時に指定します。
  50. たとえば次のようになります。
  51. </para>
  52. <programlisting role="php"><![CDATA[
  53. $domain = "example.com";
  54. $gdata = new Zend_Gdata_Gapps($client, $domain);
  55. ]]>
  56. </programlisting>
  57. </sect3>
  58. <sect3 id="zend.gdata.gapps.domain.query">
  59. <title>クエリクラスへのドメインの設定</title>
  60. <para>
  61. リクエスト対象のドメインをクエリクラスに設定する方法は、
  62. サービスクラスの場合と同じです。
  63. <code>setDomain()</code> をコールするか、
  64. あるいはクエリの作成時に指定します。
  65. たとえば次のようになります。
  66. </para>
  67. <programlisting role="php"><![CDATA[
  68. $domain = "example.com";
  69. $query = new Zend_Gdata_Gapps_UserQuery($domain, $arg);
  70. ]]>
  71. </programlisting>
  72. <para>
  73. サービスクラスのファクトリメソッドでクエリを作成する際は、
  74. サービスクラスが自動的にクエリクラスのドメインを設定します。
  75. したがってこの場合は、
  76. コンストラクタの引数でドメインを指定する必要がなくなります。
  77. </para>
  78. <programlisting role="php"><![CDATA[
  79. $domain = "example.com";
  80. $gdata = new Zend_Gdata_Gapps($client, $domain);
  81. $query = $gdata->newUserQuery($arg);
  82. ]]>
  83. </programlisting>
  84. </sect3>
  85. </sect2>
  86. <sect2 id="zend.gdata.gapps.users">
  87. <title>ユーザの操作</title>
  88. <para>
  89. Google Apps がホストするドメイン上のユーザアカウントは、
  90. <classname>Zend_Gdata_Gapps_UserEntry</classname> のインスタンスで表されます。
  91. このクラスを使用すると、
  92. アカウント名やユーザ名、パスワード、アクセス権限、
  93. そして容量制限などすべての情報にアクセスできるようになります。
  94. </para>
  95. <sect3 id="zend.gdata.gapps.users.creating">
  96. <title>ユーザアカウントの作成</title>
  97. <para>
  98. ユーザアカウントを作成するには、
  99. <code>createUser()</code> メソッドを使用します。
  100. </para>
  101. <programlisting role="php"><![CDATA[
  102. $gdata->createUser('foo', 'Random', 'User', '••••••••');
  103. ]]>
  104. </programlisting>
  105. <para>
  106. あるいは UserEntry のインスタンスから作成することもできます。
  107. 作成したインスタンスに対してユーザ名や姓、名、パスワードを設定し、
  108. サービスオブジェクトの <code>insertUser()</code>
  109. をコールすることでそのエントリをサーバにアップロードします。
  110. </para>
  111. <programlisting role="php"><![CDATA[
  112. $user = $gdata->newUserEntry();
  113. $user->login = $gdata->newLogin();
  114. $user->login->username = 'foo';
  115. $user->login->password = '••••••••';
  116. $user->name = $gdata->newName();
  117. $user->name->givenName = 'Random';
  118. $user->name->familyName = 'User';
  119. $user = $gdata->insertUser($user);
  120. ]]>
  121. </programlisting>
  122. <para>
  123. ユーザのパスワードは、通常はプレーンテキストで指定しなければなりません。
  124. <code>login->passwordHashFunction</code> を 'SHA-1'
  125. に設定した場合は、パスワードを SHA-1 ダイジェスト形式で指定することもできます。
  126. </para>
  127. </sect3>
  128. <sect3 id="zend.gdata.gapps.users.retrieving">
  129. <title>ユーザアカウントの取得</title>
  130. <para>
  131. 各ユーザアカウントを取得するには
  132. <code>retrieveUser()</code> メソッドをコールします。
  133. ユーザが見つからない場合は
  134. <code>null</code> が返されます。
  135. </para>
  136. <programlisting role="php"><![CDATA[
  137. $user = $gdata->retrieveUser('foo');
  138. echo 'ユーザ名: ' . $user->login->userName . "\n";
  139. echo '名前: ' . $user->login->givenName . "\n";
  140. echo '苗字: ' . $user->login->familyName . "\n";
  141. echo '凍結中?: ' . ($user->login->suspended ? 'Yes' : 'No') . "\n";
  142. echo '管理者?: ' . ($user->login->admin ? 'Yes' : 'No') . "\n"
  143. echo 'パスワードの変更が必要?: ' .
  144. ($user->login->changePasswordAtNextLogin ? 'Yes' : 'No') . "\n";
  145. echo '規約に同意した?: ' .
  146. ($user->login->agreedToTerms ? 'Yes' : 'No') . "\n";
  147. ]]>
  148. </programlisting>
  149. <para>
  150. もうひとつの方法は、まず
  151. <classname>Zend_Gdata_Gapps_UserQuery</classname> のインスタンスを作成して
  152. username プロパティを (取得したいユーザのユーザ名に)
  153. 設定し、サービスオブジェクトの
  154. <code>getUserEntry()</code> をコールするものです。
  155. </para>
  156. <programlisting role="php"><![CDATA[
  157. $query = $gdata->newUserQuery('foo');
  158. $user = $gdata->getUserEntry($query);
  159. echo 'ユーザ名: ' . $user->login->userName . "\n";
  160. echo '名前: ' . $user->login->givenName . "\n";
  161. echo '苗字: ' . $user->login->familyName . "\n";
  162. echo '凍結中?: ' . ($user->login->suspended ? 'Yes' : 'No') . "\n";
  163. echo '管理者?: ' . ($user->login->admin ? 'Yes' : 'No') . "\n"
  164. echo 'パスワードの変更が必要?: ' .
  165. ($user->login->changePasswordAtNextLogin ? 'Yes' : 'No') . "\n";
  166. echo '規約に同意した?: ' .
  167. ($user->login->agreedToTerms ? 'Yes' : 'No') . "\n";
  168. ]]>
  169. </programlisting>
  170. <para>
  171. 指定したユーザが発見できない場合は ServiceException
  172. がスローされ、エラーコード
  173. <classname>Zend_Gdata_Gapps_Error::ENTITY_DOES_NOT_EXIST</classname>
  174. を返します。ServiceExceptions については <xref
  175. linkend="zend.gdata.gapps.exceptions" />
  176. を参照ください。
  177. </para>
  178. </sect3>
  179. <sect3 id="zend.gdata.gapps.users.retrievingAll">
  180. <title>ドメイン内のすべてのユーザの取得</title>
  181. <para>
  182. ドメイン内のすべてのユーザを取得するには、
  183. <code>retrieveAllUsers()</code> メソッドをコールします。
  184. </para>
  185. <programlisting role="php"><![CDATA[
  186. $feed = $gdata->retrieveAllUsers();
  187. foreach ($feed as $user) {
  188. echo " * " . $user->login->username . ' (' . $user->name->givenName .
  189. ' ' . $user->name->familyName . ")\n";
  190. }
  191. ]]>
  192. </programlisting>
  193. <para>
  194. これは <classname>Zend_Gdata_Gapps_UserFeed</classname> オブジェクトを作成します。
  195. このオブジェクトは、ドメイン上の各ユーザの情報を保持しています。
  196. </para>
  197. <para>
  198. あるいは、何もオプションを指定せずに
  199. <code>getUserFeed()</code> をコールする方法もあります。
  200. 大きなドメインでは、このフィードが
  201. サーバ側で複数ページに分割される可能性があることに注意しましょう。
  202. ページ分割についての詳細は <xref
  203. linkend="zend.gdata.introduction.paging" />
  204. を参照ください。
  205. </para>
  206. <programlisting role="php"><![CDATA[
  207. $feed = $gdata->getUserFeed();
  208. foreach ($feed as $user) {
  209. echo " * " . $user->login->username . ' (' . $user->name->givenName .
  210. ' ' . $user->name->familyName . ")\n";
  211. }
  212. ]]>
  213. </programlisting>
  214. </sect3>
  215. <sect3 id="zend.gdata.gapps.users.updating">
  216. <title>ユーザアカウントの更新</title>
  217. <para>
  218. ユーザアカウントを更新するいちばん簡単な方法は、
  219. まず先ほどの方法でユーザを取得し、
  220. 必要な箇所を変更し、最後にそのユーザの
  221. <code>save()</code> をコールするというものです。
  222. これにより、変更内容がサーバに反映されます。
  223. </para>
  224. <programlisting role="php"><![CDATA[
  225. $user = $gdata->retrieveUser('foo');
  226. $user->name->givenName = 'Foo';
  227. $user->name->familyName = 'Bar';
  228. $user = $user->save();
  229. ]]>
  230. </programlisting>
  231. <sect4 id="zend.gdata.gapps.users.updating.resettingPassword">
  232. <title>ユーザのパスワードのリセット</title>
  233. <para>
  234. ユーザのパスワードをリセットして新しい値を設定するには、
  235. <code>login->password</code> プロパティを変更します。
  236. </para>
  237. <programlisting role="php"><![CDATA[
  238. $user = $gdata->retrieveUser('foo');
  239. $user->login->password = '••••••••';
  240. $user = $user->save();
  241. ]]>
  242. </programlisting>
  243. <para>
  244. 現在のパスワードをこの方式で取得することはできません。
  245. セキュリティ上の理由により、Provisioning API
  246. では現在のパスワードを取得できないようになっているからです。
  247. </para>
  248. </sect4>
  249. <sect4 id="zend.gdata.gapps.users.updating.forcingPasswordChange">
  250. <title>ユーザに強制的にパスワードを変更させる</title>
  251. <para>
  252. 次にログインしたときに強制的にパスワードを変更させるようにするには、
  253. <code>login->changePasswordAtNextLogin</code>
  254. を <code>true</code> に設定します。
  255. </para>
  256. <programlisting role="php"><![CDATA[
  257. $user = $gdata->retrieveUser('foo');
  258. $user->login->changePasswordAtNextLogin = true;
  259. $user = $user->save();
  260. ]]>
  261. </programlisting>
  262. <para>
  263. 同様に、強制しないようにするなら
  264. <code>login->changePasswordAtNextLogin</code>
  265. を <code>false</code> に設定します。
  266. </para>
  267. </sect4>
  268. <sect4 id="zend.gdata.gapps.users.updating.suspendingAccount">
  269. <title>ユーザアカウントの凍結</title>
  270. <para>
  271. ユーザのログインを制限したいがアカウント自体は残しておきたいという場合は、
  272. そのアカウントを<emphasis>凍結</emphasis>します。
  273. アカウントを凍結したり凍結を解除したりするには
  274. <code>suspendUser()</code> メソッドおよび
  275. <code>restoreUser()</code> メソッドを使用します。
  276. </para>
  277. <programlisting role="php"><![CDATA[
  278. $gdata->suspendUser('foo');
  279. $gdata->restoreUser('foo');
  280. ]]>
  281. </programlisting>
  282. <para>
  283. あるいは、UserEntry のプロパティ
  284. <code>login->suspended</code>
  285. を <code>true</code> に設定します。
  286. </para>
  287. <programlisting role="php"><![CDATA[
  288. $user = $gdata->retrieveUser('foo');
  289. $user->login->suspended = true;
  290. $user = $user->save();
  291. ]]>
  292. </programlisting>
  293. <para>
  294. アクセス制限を解除するには、同様に
  295. <code>login->suspended</code>
  296. を <code>false</code> に設定します。
  297. </para>
  298. </sect4>
  299. <sect4 id="zend.gdata.gapps.users.updating.grantingAdminRights">
  300. <title>管理者権限の付与</title>
  301. <para>
  302. ユーザに対してドメインの管理者権限を付与するには、プロパティ
  303. <code>login->admin</code> を
  304. <code>true</code> に設定します。
  305. </para>
  306. <programlisting role="php"><![CDATA[
  307. $user = $gdata->retrieveUser('foo');
  308. $user->login->admin = true;
  309. $user = $user->save();
  310. ]]>
  311. </programlisting>
  312. <para>
  313. だいたい予想はつくでしょうが、
  314. <code>login->admin</code> プロパティを
  315. <code>false</code> に設定すれば管理者権限を剥奪することができます。
  316. </para>
  317. </sect4>
  318. </sect3>
  319. <sect3 id="zend.gdata.gapps.users.deleting">
  320. <title>ユーザアカウントの削除</title>
  321. <para>
  322. ユーザアカウントを削除するには、単純に UserEntry
  323. の <code>delete()</code> をコールするだけです。
  324. </para>
  325. <programlisting role="php"><![CDATA[
  326. $user = $gdata->retrieveUser('foo');
  327. $user->delete();
  328. ]]>
  329. </programlisting>
  330. <para>
  331. そのアカウントの UserEntry オブジェクトが手元にないのなら、
  332. <code>deleteUser()</code> メソッドを使用します。
  333. </para>
  334. <programlisting role="php"><![CDATA[
  335. $gdata->deleteUser('foo');
  336. ]]>
  337. </programlisting>
  338. </sect3>
  339. </sect2>
  340. <sect2 id="zend.gdata.gapps.nicknames">
  341. <title>ニックネームの操作</title>
  342. <para>
  343. ニックネームは、既存のユーザのメールアドレスのエイリアスとなります。
  344. ニックネームには、name と owner のふたつのプロパティがあります。
  345. あるニックネームあてに送信されたメールは、
  346. そのニックネームの持ち主であるユーザに転送されます。
  347. </para>
  348. <para>
  349. ニックネームは
  350. <classname>Zend_Gdata_Gapps_NicknameEntry</classname>
  351. のインスタンスで表されます。
  352. </para>
  353. <sect3 id="zend.gdata.gapps.nicknames.creating">
  354. <title>ニックネームの作成</title>
  355. <para>
  356. ニックネームを作成するには
  357. <code>createNickname()</code> メソッドをコールします。
  358. </para>
  359. <programlisting role="php"><![CDATA[
  360. $gdata->createNickname('foo', 'bar');
  361. ]]>
  362. </programlisting>
  363. <para>
  364. あるいは NicknameEntry のインスタンスから作成することもできます。
  365. 作成したインスタンスに対して名前と所有者を設定し、
  366. サービスオブジェクトの <code>insertNickname()</code>
  367. をコールすることでそのエントリをサーバにアップロードします。
  368. </para>
  369. <programlisting role="php"><![CDATA[
  370. $nickname = $gdata->newNicknameEntry();
  371. $nickname->login = $gdata->newLogin('foo');
  372. $nickname->nickname = $gdata->newNickname('bar');
  373. $nickname = $gdata->insertNickname($nickname);
  374. ]]>
  375. </programlisting>
  376. </sect3>
  377. <sect3 id="zend.gdata.gapps.nicknames.retrieving">
  378. <title>ニックネームの取得</title>
  379. <para>
  380. ニックネームを取得するには
  381. <code>retrieveNickname()</code> メソッドをコールします。
  382. ユーザが見つからない場合は
  383. <code>null</code> が返されます。
  384. </para>
  385. <programlisting role="php"><![CDATA[
  386. $nickname = $gdata->retrieveNickname('bar');
  387. echo 'ニックネーム: ' . $nickname->nickname->name . "\n";
  388. echo '所有者: ' . $nickname->login->username . "\n";
  389. ]]>
  390. </programlisting>
  391. <para>
  392. もうひとつの方法は、まず
  393. <classname>Zend_Gdata_Gapps_NicknameQuery</classname> のインスタンスを作成して
  394. nickname プロパティを (取得したいニックネームに)
  395. 設定し、サービスオブジェクトの
  396. <code>getNicknameEntry()</code> をコールするものです。
  397. </para>
  398. <programlisting role="php"><![CDATA[
  399. $query = $gdata->newNicknameQuery('bar');
  400. $nickname = $gdata->getNicknameEntry($query);
  401. echo 'ニックネーム: ' . $nickname->nickname->name . "\n";
  402. echo '所有者: ' . $nickname->login->username . "\n";
  403. ]]>
  404. </programlisting>
  405. <para>
  406. ユーザの場合と同様、指定したニックネームが発見できない場合は
  407. ServiceException がスローされ、エラーコード
  408. <classname>Zend_Gdata_Gapps_Error::ENTITY_DOES_NOT_EXIST</classname>
  409. を返します。ServiceExceptions については <xref
  410. linkend="zend.gdata.gapps.exceptions" />
  411. を参照ください。
  412. </para>
  413. </sect3>
  414. <sect3 id="zend.gdata.gapps.nicknames.retrievingUser">
  415. <title>あるユーザのすべてのニックネームの取得</title>
  416. <para>
  417. 指定したユーザのすべてのニックネームを取得するには、
  418. <code>retrieveNicknames()</code> メソッドをコールします。
  419. </para>
  420. <programlisting role="php"><![CDATA[
  421. $feed = $gdata->retrieveNicknames('foo');
  422. foreach ($feed as $nickname) {
  423. echo ' * ' . $nickname->nickname->name . "\n";
  424. }
  425. ]]>
  426. </programlisting>
  427. <para>
  428. これは <classname>Zend_Gdata_Gapps_NicknameFeed</classname> オブジェクトを作成します。
  429. このオブジェクトは、指定したユーザのニックネームに関する情報を保持します。
  430. </para>
  431. <para>
  432. あるいは、新しい <classname>Zend_Gdata_Gapps_NicknameQuery</classname>
  433. を作成して username プロパティをそのユーザに設定し、
  434. サービスオブジェクトの <code>getNicknameFeed()</code>
  435. をコールすることもできます。
  436. </para>
  437. <programlisting role="php"><![CDATA[
  438. $query = $gdata->newNicknameQuery();
  439. $query->setUsername('foo');
  440. $feed = $gdata->getNicknameFeed($query);
  441. foreach ($feed as $nickname) {
  442. echo ' * ' . $nickname->nickname->name . "\n";
  443. }
  444. ]]>
  445. </programlisting>
  446. </sect3>
  447. <sect3 id="zend.gdata.gapps.nicknames.retrievingAll">
  448. <title>ドメイン内のすべてのニックネームの取得</title>
  449. <para>
  450. フィード内のすべてのニックネームを取得するには、
  451. <code>retrieveAllNicknames()</code> メソッドをコールします。
  452. </para>
  453. <programlisting role="php"><![CDATA[
  454. $feed = $gdata->retrieveAllNicknames();
  455. foreach ($feed as $nickname) {
  456. echo ' * ' . $nickname->nickname->name . ' => ' .
  457. $nickname->login->username . "\n";
  458. }
  459. ]]>
  460. </programlisting>
  461. <para>
  462. これは <classname>Zend_Gdata_Gapps_NicknameFeed</classname> オブジェクトを作成します。
  463. このオブジェクトは、ドメイン上の各ニックネームの情報を保持しています。
  464. </para>
  465. <para>
  466. あるいは、サービスオブジェクトの <code>getNicknameFeed()</code>
  467. を引数なしでコールする方法もあります。
  468. </para>
  469. <programlisting role="php"><![CDATA[
  470. $feed = $gdata->getNicknameFeed();
  471. foreach ($feed as $nickname) {
  472. echo ' * ' . $nickname->nickname->name . ' => ' .
  473. $nickname->login->username . "\n";
  474. }
  475. ]]>
  476. </programlisting>
  477. </sect3>
  478. <sect3 id="zend.gdata.gapps.nicknames.deleting">
  479. <title>ニックネームの削除</title>
  480. <para>
  481. ニックネームを削除するには、単純に NicknameEntry
  482. の <code>delete()</code> をコールするだけです。
  483. </para>
  484. <programlisting role="php"><![CDATA[
  485. $nickname = $gdata->retrieveNickname('bar');
  486. $nickname->delete();
  487. ]]>
  488. </programlisting>
  489. <para>
  490. そのニックネームの NicknameEntry オブジェクトが手元にないのなら、
  491. <code>deleteNickname()</code> メソッドを使用します。
  492. </para>
  493. <programlisting role="php"><![CDATA[
  494. $gdata->deleteNickname('bar');
  495. ]]>
  496. </programlisting>
  497. </sect3>
  498. </sect2>
  499. <sect2 id="zend.gdata.gapps.emailLists">
  500. <title>メーリングリストの操作</title>
  501. <para>
  502. メーリングリストは、複数のユーザのメールアドレスを
  503. ひとつのメールアドレスに対応させるものです。
  504. このドメインのメンバー以外であっても、
  505. メーリングリストに参加することができます。
  506. </para>
  507. <para>
  508. ドメイン上のメーリングリストの情報は、
  509. <classname>Zend_Gdata_Gapps_EmailListEntry</classname> のインスタンスとして表されます。
  510. </para>
  511. <sect3 id="zend.gdata.gapps.emailLists.creating">
  512. <title>メーリングリストの作成</title>
  513. <para>
  514. メーリングリストを作成するには
  515. <code>createEmailList()</code> メソッドを使用します。
  516. </para>
  517. <programlisting role="php"><![CDATA[
  518. $gdata->createEmailList('friends');
  519. ]]>
  520. </programlisting>
  521. <para>
  522. あるいは EmailListEntry のインスタンスから作成することもできます。
  523. 作成したインスタンスに対してメーリングリストの名前を設定し、
  524. サービスオブジェクトの <code>insertEmailList()</code>
  525. をコールすることでそのエントリをサーバにアップロードします。
  526. </para>
  527. <programlisting role="php"><![CDATA[
  528. $list = $gdata->newEmailListEntry();
  529. $list->emailList = $gdata->newEmailList('friends');
  530. $list = $gdata->insertEmailList($list);
  531. ]]>
  532. </programlisting>
  533. </sect3>
  534. <sect3 id="zend.gdata.gapps.emailList.retrieve">
  535. <title>あるアカウントが購読しているすべてのメーリングリストの取得</title>
  536. <para>
  537. 特定の参加者が購読しているすべてのメーリングリストを取得するには
  538. <code>retrieveEmailLists()</code> メソッドをコールします。
  539. </para>
  540. <programlisting role="php"><![CDATA[
  541. $feed = $gdata->retrieveEmailLists('baz@somewhere.com');
  542. foreach ($feed as $list) {
  543. echo ' * ' . $list->emailList->name . "\n";
  544. }
  545. ]]>
  546. </programlisting>
  547. <para>
  548. これは <classname>Zend_Gdata_Gapps_EmailListFeed</classname> オブジェクトを作成します。
  549. このオブジェクトは、指定した参加者に関連するメーリングリストの情報を保持します。
  550. </para>
  551. <para>
  552. あるいは、新しい <classname>Zend_Gdata_Gapps_EmailListQuery</classname>
  553. を作成して recipient プロパティをそのメールアドレスに設定し、
  554. サービスオブジェクトの <code>getEmailListFeed()</code>
  555. をコールすることもできます。
  556. </para>
  557. <programlisting role="php"><![CDATA[
  558. $query = $gdata->newEmailListQuery();
  559. $query->setRecipient('baz@somewhere.com');
  560. $feed = $gdata->getEmailListFeed($query);
  561. foreach ($feed as $list) {
  562. echo ' * ' . $list->emailList->name . "\n";
  563. }
  564. ]]>
  565. </programlisting>
  566. </sect3>
  567. <sect3 id="zend.gdata.gapps.emailLists.retrievingAll">
  568. <title>ドメイン内のすべてのメーリングリストの取得</title>
  569. <para>
  570. ドメイン内のすべてのメーリングリストを取得するには
  571. <code>retrieveAllEmailLists()</code> メソッドをコールします。
  572. </para>
  573. <programlisting role="php"><![CDATA[
  574. $feed = $gdata->retrieveAllEmailLists();
  575. foreach ($feed as $list) {
  576. echo ' * ' . $list->emailList->name . "\n";
  577. }
  578. ]]>
  579. </programlisting>
  580. <para>
  581. これは <classname>Zend_Gdata_Gapps_EmailListFeed</classname> オブジェクトを作成します。
  582. このオブジェクトは、ドメイン上の各メーリングリストに関する情報を保持します。
  583. </para>
  584. <para>
  585. あるいは、サービスオブジェクトの <code>getEmailListFeed()</code>
  586. を引数なしでコールする方法もあります。
  587. </para>
  588. <programlisting role="php"><![CDATA[
  589. $feed = $gdata->getEmailListFeed();
  590. foreach ($feed as $list) {
  591. echo ' * ' . $list->emailList->name . "\n";
  592. }
  593. ]]>
  594. </programlisting>
  595. </sect3>
  596. <sect3 id="zend.gdata.gapps.emailList.deleting">
  597. <title>メーリングリストの削除</title>
  598. <para>
  599. メーリングリストを削除するには
  600. deleteEmailList() メソッドをコールします。
  601. </para>
  602. <programlisting role="php"><![CDATA[
  603. $gdata->deleteEmailList('friends');
  604. ]]>
  605. </programlisting>
  606. </sect3>
  607. </sect2>
  608. <sect2 id="zend.gdata.gapps.emailListRecipients">
  609. <title>メーリングリストの参加者の操作</title>
  610. <para>
  611. メーリングリストの各参加者は、
  612. <classname>Zend_Gdata_Gapps_EmailListRecipient</classname> のインスタンスとして表されます。
  613. このクラスを使用すると、メーリングリストにメンバーを追加したり、
  614. そこからメンバーを削除したりすることができます。
  615. </para>
  616. <sect3 id="zend.gdata.gapps.emailListRecipients.adding">
  617. <title>メーリングリストへの参加者の追加</title>
  618. <para>
  619. メーリングリストにメンバーを追加するには
  620. <code>addRecipientToEmailList()</code> メソッドをコールします。
  621. </para>
  622. <programlisting role="php"><![CDATA[
  623. $gdata->addRecipientToEmailList('bar@somewhere.com', 'friends');
  624. ]]>
  625. </programlisting>
  626. </sect3>
  627. <sect3 id="zend.gdata.gapps.emailListRecipients.retrieving">
  628. <title>メーリングリストの参加者一覧の取得</title>
  629. <para>
  630. <code>retrieveAllRecipients()</code>
  631. メソッドを使用すると、メーリングリストの参加者一覧を取得できます。
  632. </para>
  633. <programlisting role="php"><![CDATA[
  634. $feed = $gdata->retrieveAllRecipients('friends');
  635. foreach ($feed as $recipient) {
  636. echo ' * ' . $recipient->who->email . "\n";
  637. }
  638. ]]>
  639. </programlisting>
  640. <para>
  641. あるいは、新しい EmailListRecipientQuery
  642. を作成して emailListName プロパティをそのメーリングリストに設定し、
  643. サービスオブジェクトの <code>getEmailListRecipientFeed()</code>
  644. をコールすることもできます。
  645. </para>
  646. <programlisting role="php"><![CDATA[
  647. $query = $gdata->newEmailListRecipientQuery();
  648. $query->setEmailListName('friends');
  649. $feed = $gdata->getEmailListRecipientFeed($query);
  650. foreach ($feed as $recipient) {
  651. echo ' * ' . $recipient->who->email . "\n";
  652. }
  653. ]]>
  654. </programlisting>
  655. <para>
  656. これは <classname>Zend_Gdata_Gapps_EmailListRecipientFeed</classname> オブジェクトを作成します。
  657. このオブジェクトは、指定したメーリングリストの各参加者に関する情報を保持します。
  658. </para>
  659. </sect3>
  660. <sect3 id="zend.gdata.gapps.emailListRecipients.removing">
  661. <title>ある参加者のメーリングリストからの削除</title>
  662. <para>
  663. メーリングリストからメンバーを削除するには
  664. <code>removeRecipientFromEmailList()</code> メソッドをコールします。
  665. </para>
  666. <programlisting role="php"><![CDATA[
  667. $gdata->removeRecipientFromEmailList('baz@somewhere.com', 'friends');
  668. ]]>
  669. </programlisting>
  670. </sect3>
  671. </sect2>
  672. <sect2 id="zend.gdata.gapps.exceptions">
  673. <title>エラー処理</title>
  674. <para>
  675. <classname>Zend_Gdata</classname> が標準でスローする例外に加えて、
  676. Provisioning API によるリクエストでは
  677. <classname>Zend_Gdata_Gapps_ServiceException</classname>
  678. がスローされる可能性があります。これらの例外は、
  679. API 固有のエラーが原因でリクエストが失敗したことを表します。
  680. </para>
  681. <para>
  682. ServiceException のインスタンスには、
  683. ひとつあるいは複数の Error オブジェクトが含まれます。
  684. これらのオブジェクトにはエラーコードとエラーの原因、そして
  685. (オプションで) その例外を引き起こした入力が含まれます。
  686. エラーコードの完全な一覧は、Zend Framework API
  687. ドキュメントで <classname>Zend_Gdata_Gapps_Error</classname> の部分を参照ください。
  688. さらに、正式なエラーの一覧は <ulink
  689. url="http://code.google.com/apis/apps/gdata_provisioning_api_v2.0_reference.html#appendix_d">Google
  690. Apps Provisioning API V2.0 Reference: Appendix D</ulink>
  691. で見ることができます。
  692. </para>
  693. <para>
  694. ServiceException に含まれるすべてのエラーの一覧は
  695. <code>getErrors()</code> で配列として取得できますが、
  696. 特定のエラーが発生したのかどうかだけを知りたいこともあります。
  697. そのような場合には <code>hasError()</code> をコールします。
  698. </para>
  699. <para>
  700. 以下の例は、
  701. リクエストしたリソースが存在しなかった場合を検出し、
  702. 適切に処理するものです。
  703. </para>
  704. <programlisting role="php"><![CDATA[
  705. function retrieveUser ($username) {
  706. $query = $gdata->newUserQuery($username);
  707. try {
  708. $user = $gdata->getUserEntry($query);
  709. } catch (Zend_Gdata_Gapps_ServiceException $e) {
  710. // ユーザが見つからなかった場合は null を設定します
  711. if ($e->hasError(Zend_Gdata_Gapps_Error::ENTITY_DOES_NOT_EXIST)) {
  712. $user = null;
  713. } else {
  714. throw $e;
  715. }
  716. }
  717. return $user;
  718. }
  719. ]]>
  720. </programlisting>
  721. </sect2>
  722. </sect1>