見出し画像

【GAS】でGmailを使いこなす! クラスの全体像編

ここでは、GoogleAppsScript で Gmail を扱うにあたり使用するクラスがどのようなものがあるか、それらの全体像を紹介していこうとおもいます。
各クラスの説明は簡単に行いますが、それぞれのクラスについて詳しく説明した記事もあり、リンクを載せてありますのでご参考にしてください。

また、GoogleAppsScript で Gmail を扱うにあたり、事前に知っておいていただきたい知識や考え方があり、それらの記事がありますのでぜひご参照ください。


どのようなクラスがあるか

GoogleAppsScript で Gmail を扱うにあたり使うクラスがグループ化されたものが「Gmail Service」として用意されています。

その中には、以下のクラスが用意されています。

以下でそれぞれ簡単に紹介していきます。

GmailApp クラス

GmailAppクラスは、Gmail サービスの中で大元となるクラスで、普遍的な機能を持っているものになります。
普遍的とは、Gmail サービス全体のクラスを扱うメソッドを持っている為です。
以下でそれぞれのクラスのオブジェクトに対しどのようなものがあるか見てみます。

  • GmailThread クラス(スレッド)に対して

新規メールの送信(新規のスレッドを作成する)
スレッドの検索
スレッドの取得(ID、受信トレイ、重要、迷惑メール内、ゴミ箱内)

などです。
また、新規メールの送信については個別に記事がありますので、よろしければご覧下さい。

  • GmailMessage クラス(メッセージ)に対して

メッセージの ID からメッセージ(Message)のオブジェクトを取得

  • GmailDraft クラス(下書き)に対して

新規メッセージの下書きを作成
既存の下書きのメッセージを取得(下書きの ID で個別に取得するか、全ての下書きを取得)

  • GmailLabel クラス(ラベル)に対して

新たなラベルの作成
ラベルの取得(ラベルの名前による個別に取得、または既存の全てのラベルの取得)

などができます。

下のリンク先で、GmailApp クラスについてより詳しく説明しています。

GmailThread クラス

Gmail にて一連のやり取りのメール(メッセージ)のまとまりをスレッド(Thread)となりますが、それをオブジェクトとして扱えるのが、「GmailThread」クラスです。

GmailThread クラスのオブジェクトは以下の情報やデータから構成されています。

  • 一連のやり取りのメッセージ(Message)の集合

  • スレッドが置かれている場所(受信トレイ(Inbox)、アーカイブ(Archive)、ゴミ箱(Trash)、迷惑メール(Spam))

  • ステータス情報(ラベル、重要性、既読かどうか)

  • 付属情報(ID、最後のメッセージの日時、Gmail による重要性の識別、初期のメッセージの件名など)

GmailThread クラスでスレッド(Thread)に行えること

  • スレッドに含まれているメッセージ(Message)の取得

  • スレッドの置かれてい場所の取得や移動(受信トレイ、アーカイブ、ゴミ箱または迷惑メールに移動)

  • スレッドのステータス情報の管理
        スレッドのラベルの取得、追加や削除
        スレッドが重要とされているかの取得と重要性の付与または剥奪
        スレッドの既読状況の取得と既読済みまたは未読の状態を付与する

  • スレッドの付属情報の取得
        スレッドの ID や URL の取得
        最後のメッセージの日時や初期の件名の取得     スレッドにスターの印が付いたメッセージを含んでいるかどうか

下のリンク先で、GmailThread クラスについてより詳しく説明しています。

GmailMessage クラス

Gmail において一通のメールにあたるものが、メッセージ(Message)になり、これをオブジェクトとして扱えるのが、「GmailMessage」クラスです。

このメッセージは、上記のスレッド(Thread)を構成している一連のやり取りのまとまりのうちの単体のものを指します。

GmailMessage クラスのオブジェクトは以下の情報やデータから構成されています。

  • メール的要素(宛先他メールアドレス情報、件名、本文、添付データ)

  • ステータス情報(スターマーク(重要なメッセージであることの印の有無、既読の状況、破棄されているかいないか)

  • 付属情報(日時、ID、メッセージが下書きかどうか、スレッドの情報)

GmailMessage クラスで行えること

  • メッセージを構成しているメール的要素(メールアドレス、件名、本文や添付データの取得)

  • メッセージのステータス情報の管理
        メッセージ単体の重要性の管理(スターマークがついているかどうかの取得やそれの付与や削除)
        メッセージの既読状況の管理(既読済みかどうかの取得と既読済みにしたり未読状態にする)
        メッセージの破棄状態の管理(破棄されているかどうかの取得や破棄したりする)

  • メッセージの付属情報の取得
        メッセージの ID、日時の取得
        メッセージが下書き(Draft)のものかどうかを取得
         メッセージを含んでいるスレッドの取得など

  • メッセージへの返信や返信メッセージの下書きを作成

下のリンク先で、GmailMessage クラスについてより詳しく説明しています。

GmailDraft クラス

GoogleAppsScript で、メールの下書きの作成、下書きの送信や下書きの削除などメールの下書きをオブジェクトとして管理できるクラスである「GmailDraft」クラスです。

GmailDraft クラスのオブジェクトは以下の情報やデータから構成されています。

  • ID

  • GmailMessage クラスのオブジェクト

GmailDraft クラスで行えること

  • 下書きのメッセージ(Draft)が持っている情報の取得
        下書きメッセージの ID
        下書きにあるメッセージのオブジェクト

  • 下書きメッセージに対して行えること
        下書きメッセージの更新
        下書きメッセージを送信
        下書きメッセージを削除

下のリンク先で、GmailDraft クラスについてより詳しく説明しています。

GmailLabel クラス

スレッドの分類や整理のためのタグ付けするの様に、Gmail ではラベルをつけることができますが、そのラベル自体をオブジェクトとして扱う為のクラスが「GmailLabel」です。

GmailLabel クラスのオブジェクトは以下の情報やデータから構成されています。

  • ラベルの名前

  • ラベルが付けられているスレッド

GmailLabel クラスで行えること

  • ラベルのオブジェクトのラベル名の取得

  • ラベルが付けられているスレッドの取得

  • スレッドにラベルをつけたり、削除する

  • ラベル自身の削除

下のリンク先で、GmailDraft クラスについてより詳しく説明しています。

GmailAttachment クラス

メッセージ(Message)に添付されているデータをオブジェクトとして扱う為のクラスが「GmailAttachment」です。

添付データを扱う流れとして、

  • メッセージから添付データのオブジェクト(GmailAttachment クラスのオブジェクト)の取得

  • 添付データのオブジェクトからデータそのものである Blob データの取得

  • Blob データを好きなように扱う(Google ドライブに保存など)

なお、添付データを Blob データとして取得しておりますが、この Blob データについて説明した記事がありますのでよろしければご覧ください。

また、GmailAttachment クラスで用意されているメソッドなどは、Blob データを扱う Blob クラスのオブジェクトとして行えるものがほんとんどなので、より詳細な説明の記事は書いておりません。

ここでは、GmailAttachment クラスのオブジェクトから Blob データの取得の仕方を紹介します。

添付データから Blob データの取得

GmailAttachment クラスのオブジェクト.copyBlob()

引数:無し
戻り値:添付された Blob データ(Blob クラスのオブジェクト)

// メッセージ(Message)から添付データのオブジェクトを取得
let attachmentObject = messageObject.getAttachments()[0];

// 添付データのオブジェクトからBlobデータを取得
let blobObject = attachmentObject.copyBlob();

この記事が気に入ったらサポートをしてみませんか?