4D v20 R4 では、Gmail コマンドセットに強力な機能拡張が追加されました。
1つ目は、複数のメールを同時に取得できる機能で、2つ目は、メールのラベルを変更する機能です。
アカウント接続
アカウントに接続するには、OAuth2Provider オブジェクトと Googleオブジェクトを作成します。
var $oAuth2 : cs.NetKit.OAuth2Provider
var $google : cs.NetKit.Google
$oAuth2:=cs.NetKit.OAuth2Provider.new($credentials)
$google:=cs.NetKit.Google.new($oAuth2; {mailType: "JMAP"})
メールラベルの追加と削除
ラベルはメールを分類するためのもので、他のメールシステムのフォルダーに似ています。しかし、ラベルが特別なのは、一つのメールに複数のラベルを割り当てることができる点です。ラベルには、INBOX、SPAM、TRASH、UNREAD、STARRED、IMPORTANT などのシステムラベル、またはカスタムラベルがあります。たとえば、あるメールに “仕事” と “重要” のラベルを付けるには、次のように .update() 関数を使います:
$status:=$google.mail.update($mailIds; {addLabelIds: ["Work"; "IMPORTANT"]})
同様に、.update() 関数でメールからラベルを削除できます。たとえば、”UNREAD” ラベルを削除したい場合は次のように書きます:
$status:=$google.mail.update($mailIds; {removeLabelIds: ["UNREAD"]})
複数メールのダウンロード
取得したいメールが複数ある場合、.getMails() 関数を使用します:
$mailIds:=$google.mail.getMailIds({labelIds: ["INBOX","UNREAD"]})
// メールID のコレクションをもとにメールを取得します
$mails:=$google.mail.getMails($mailIds)
.getMails() が一度に取得できるメールの最大数は 100通です。それ以上のメールを取得するには、この関数を数回呼び出します。
このフィーチャーリリースは 4D の Gmailコマンドセットを充実させ、メールの一括取得やラベル管理などの機能を強化しました。
詳細な実装については、ドキュメント を参照ください。