Gmailの設定を操作するAPIが開放されました


2016/7/7にGoogle公式のブログの記事[Gmail API: New endpoints for settings](http://googleappsdeveloper.blogspot.jp/2016/07/gmail-api-new-endpoints-for-settings.html)でGmailの設定を操作するAPIを追加した旨のアナウンスがされました。
※現在すでに実行可能です。

それによって何が変わる（できる）ようになるかをメモがてら解説をしようと思います。

## 対象読者
* メールを送信するサービスの開発者
* メールクライアントアプリの開発者
* Google Apps for Work (Education)のシステム管理者

## 前提
情報元は全て公式のリファレンスの[Gmail API](https://developers.google.com/gmail/api/)と筆者の簡単な動作確認です。


# APIの種類

## [フィルタの設定](https://developers.google.com/gmail/api/guides/filter_settings)
[ラベルのAPI](https://developers.google.com/gmail/api/v1/reference/users/labels)でラベルを作成することも可能なのでそっちでサービスのラベルを作成しておき、fromにサービス側のEmail/処理にラベルを付けるフィルターの作成などに利用できるかも。
強制的にやったらまず嫌がられるので、当サービスを管理するためのラベルとフィルターを作りますか？みたいな確認してからならありかもしれない。

![image](https://qiita-image-store.s3.amazonaws.com/0/35595/30547ab2-a039-da4c-aafb-68abfa594585.png)



## [IMAP/POPの設定](https://developers.google.com/gmail/api/guides/pop_imap_settings)
メールクライアントアプリ側で設定を行ってもGmail側で有効になっていないと使えません。
そのためアプリ側からAPIを発行して有効にしてしまうとかですかね。

![image](https://qiita-image-store.s3.amazonaws.com/0/35595/0a743e52-8a60-f1cf-beda-2a01b17a5730.png)



## [転送設定](https://developers.google.com/gmail/api/guides/forwarding_settings)
メールの転送設定です。

![image](https://qiita-image-store.s3.amazonaws.com/0/35595/a452cf52-3602-01ed-cb7b-58c7c3e7b736.png)


これは3rdパーティにやらせるのはかなり危険なので流石に制限があります。
取得は一般のGmail（@gmail.com）でも利用可能ですが、
変更は Apps for Work（Education）かつサービスアカウント必須みたいです。

以下のようなエラーになります。

```json
{
 "error": {
  "errors": [
   {
    "domain": "global",
    "reason": "forbidden",
    "message": "Access restricted to service accounts that have been delegated domain-wide authority"
   }
  ],
  "code": 403,
  "message": "Access restricted to service accounts that have been delegated domain-wide authority"
 }
}
```

## [不在通知設定](https://developers.google.com/gmail/api/guides/vacation_settings)
有効にしていると設定したメッセージを返してくれる機能です。
勤怠管理するサービスとかで使うといいかも。

![image](https://qiita-image-store.s3.amazonaws.com/0/35595/6d68065e-20fe-1537-3bd7-80be0dcbc8a8.png)



## [他のメールアドレスからのメール送信設定（署名の設定）](https://developers.google.com/gmail/api/guides/alias_and_signature_settings)
どのアドレスから送信できるかの設定とそれに紐づく署名の設定です。
![image](https://qiita-image-store.s3.amazonaws.com/0/35595/8dcb4ca9-ba57-40d4-f4d7-e20e8b4c2546.png)

![image](https://qiita-image-store.s3.amazonaws.com/0/35595/675ece86-ab59-d884-a368-efaa39cc1a3e.png)





# 今後追加するとアナウンスされているAPI
現在（2016/7/13時点）あるAPIは上に記載したやつだけですが、これから追加するとアナウンスされています。

## アカウントへのアクセスを許可
メールの委任とか呼ばれてる機能ですね。
メールの送受信を代わりに行うことができます。
![image](https://qiita-image-store.s3.amazonaws.com/0/35595/a67c110e-f5c2-95c4-07ae-effeced77d0a.png)


# Google Apps for Work (Education)のシステム管理者向けの情報

## Email Settings API
本APIの追加により[Email Settings API](https://developers.google.com/admin-sdk/email-settings/)は~~**2017/7/7**に完全に廃止されるようです。~~
**2017/11/15**に完全に廃止されるようです。（延びたみたいです。2017/5/29記載)

[移行ガイド](https://developers.google.com/gmail/api/guides/migrate-from-email-settings)も必ず見ましょう！

## 注意点
これらのAPIは[Admin SDK](https://developers.google.com/admin-sdk/)内の[Email Settings API](https://developers.google.com/admin-sdk/email-settings/)で提供されていた内容がベースです。
つまり今まではシステム管理者が独占して管理できていましたが、3rdパーティのアプリに取得・変更される恐れがあるということです。
ただGoogleが判断したAPIはサービスアカウント認証が必須みたいです。（転送設定の作成とか）


# あとがき
これからGmail APIを使う方はこの辺の記事を見ると良いかと思います。
[Google I/O 2014の裏でひっそり公開されたGmail APIを触ってみる](http://qiita.com/soundTricker/items/e09351ab2c82760ac5b1)
[Google Gmail APIでメールを取得する](http://qiita.com/ryurock/items/4b063372ede81780c3c8)