【GAS】Gメールの下書き(ドラフト)機能まとめ【サンプルソース付】

快速ワーク
スポンサーリンク

GAS開発者向けにGメールの下書き(ドラフト)機能をすべてまとめました。

毎日決まった内容をいちいちメールしなければならない人、きっとたくさんいますよね。めんどくさくないですか?

定型文のメールを作成する場合は確実に時短に繋がります。宛て先や件名などは自動化して、本文の大事な内容に注力しましょう。

下書き(ドラフト)に関するメソッドをすべて載せてます。少しでも参考になれば幸いです。


スポンサーリンク

GメールAPPクラス[GmailApp]の下書き(ドラフト)作成

Gメールの下書き作成メソッドです。

下書きメール作成1[createDraft(受信者, 件名, 本文)

createDraft(recipient, subject, body)
ドラフトメールメッセージを作成します。メールのサイズ(ヘッダーを含む)は制限されています。

function createDraft1Sample() {
  // 以下のコードは、現在の日付と時刻でドラフトメールを作成します。
  var now = new Date();
  GmailApp.createDraft("mike@example.com", "current time", "The time is: " + now.toString());
}
Parameters
名前タイプ説明
recipientStringメールアドレスのコンマ区切りリスト。
subjectStringメールの件名。
bodyStringメールの本文。

Return
GmailDraft - 新しく作成されたドラフト。

参照:Google Apps Script | REFERENCE | Gmail | Class GmailApp | Methods | createDraft(recipient, subject, body)

下書きメール作成2(オプション)[createDraft(受信者, 件名, 本文, オプション)]

createDraft(recipient, subject, body, options)
オプションの引数を使用してドラフトメールメッセージを作成します。電子メールには、プレーンテキストまたはHTML本文を含めることができます。電子メールのサイズ(ヘッダーを含むが、添付ファイルを除く)は割り当て制限されています。

function createDraft2Sample() {
  // PDFとして添付されたGoogleドライブのファイルを使用してドラフトメールを作成します。
  var file = DriveApp.getFileById('1234567890abcdefghijklmnopqrstuvwxyz');
  GmailApp.createDraft('mike@example.com', 'Attachment example', 'Please see attached file.', {
      attachments: [file.getAs(MimeType.PDF)],
      name: 'Automatic Emailer Script'
  });
}
Parameters
名前タイプ説明
recipientString受信者のアドレス。
subjectString件名。
bodyStringメールの本文。
optionsObject以下にリストされているように、拡張パラメーターを指定するJavaScriptオブジェクト
Advanced parameters
名前タイプ説明
attachmentsBlobSource[]電子メールで送信するファイルの配列。
bccStringBCCへの電子メールアドレスのコンマ区切りリスト。
ccStringCCへの電子メールアドレスのコンマ区切りリスト。
fromString電子メールの送信元アドレス。getAliases()によって返される値のいずれかである必要があります。
htmlBodyString設定されている場合、HTMLをレンダリングできるデバイスは、必要なbody引数の代わりにHTMLを使用します。メールのインライン画像がある場合は、HTML本文にオプションのinlineImagesフィールドを追加できます。
inlineImagesObject画像キー(String)から画像データ(BlobSource)へのマッピングを含むJavaScriptオブジェクト。これは、htmlBodyパラメーターが使用され、の形式でこれらの画像への参照が含まれていることを前提としています。
nameString電子メールの送信者の名前。(デフォルト:ユーザーの名前)
replyToStringデフォルトの返信先アドレスとして使用するメールアドレス。(デフォルト:ユーザーのメールアドレス)

Return
GmailDraft - 新しく作成されたドラフト。

参照:Google Apps Script | REFERENCE | Gmail | Class GmailApp | Methods | createDraft(recipient, subject, body, options)

GメールAPPクラス[GmailApp]の下書き(ドラフト)取得

Gメールの下書き取得メソッドです。

下書き取得[getDraft(下書きID)]

getDraft(draftId)
IDでメールメッセージの下書きを取得します。

これをGmailの下書きでgetId()と組み合わせて使用します。

function getDraftSample() {
  // 下書きフォルダ内の最初の下書きメッセージを取得します
  var draft = GmailApp.getDrafts()[0];
  // IDを取得します
  var draftId = draft.getId();
  // ここで、そのIDを使用して同じドラフトを取得します。
  var draftById = GmailApp.getDraft(draftId);
  // 同じメッセージである必要があるため、常にtrueを記録する必要があります
  Logger.log(draft.getMessage().getSubject() == draftById.getMessage().getSubject());
}
Parameters
名前タイプ説明
draftIdString取得するドラフトのID。

Return
GmailDraft - 指定されたIDのドラフト。

Throws
Error - 指定されたIDの下書きが見つからない場合。

参照:Google Apps Script | REFERENCE | Gmail | Class GmailApp | Methods | getDraft(draftId)

すべての下書きメッセージ取得[getDraftMessages()]

getDraftMessages()
すべての下書きメッセージを取得します。

function getDraftMessagesSample() {
  // 下書きメッセージの数を記録します
  var drafts = GmailApp.getDraftMessages();
  Logger.log(drafts.length);
}

Return
GmailMessage[] - 下書きのGmailメッセージの配列

参照:Google Apps Script | REFERENCE | Gmail | Class GmailApp | Methods | getDraftMessages()

すべての下書き取得[getDrafts()]

getDrafts()
すべてのGmailドラフトメッセージを取得します。

function getDraftsSample() {
  var drafts = GmailApp.getDrafts();
  for (var i = 0; i < drafts.length; i++) {
    Logger.log(drafts[i].getId());
  }
}

Return
GmailDraft[] - Gmailの下書きメッセージの配列。

参照:Google Apps Script | REFERENCE | Gmail | Class GmailApp | Methods | getDrafts()

Gメール下書き(ドラフト)クラス[GmailDraft]

ユーザーのGmailアカウントにユーザーが作成した下書きメッセージ。

参照:Google Apps Script | REFERENCE | Gmail | Class GmailDraft

Methods
方法タイプ説明
deleteDraft()voidこのドラフトメッセージを削除します。
getId()StringこのドラフトメッセージのIDを取得します。
getMessage()GmailMessageこのドラフトを表すGmailMessageを返します。
getMessageId()Stringこのドラフトを表すGmailMessageのIDを返します。
send()GmailMessageこのドラフトメールメッセージを送信します。
update(recipient, subject, body)GmailDraftこのドラフトメッセージの内容を置き換えます。
update(recipient, subject, body, options)GmailDraftオプションの引数を使用して、このドラフトメッセージの内容を置き換えます。

下書き削除[deleteDraft()]

deleteDraft()
このドラフトメッセージを削除します。

function deleteDraftSample() {
  var draft = GmailApp.getDrafts()[0]; // 下書きフォルダ内の最初の下書きメッセージ
  draft.deleteDraft();
  draft.getMessage(); // 例外をスローします!
}

下書きID取得[getId()]

getId()
このドラフトメッセージのIDを取得します。

function getIdSample() {
  var draft = GmailApp.getDrafts()[0]; // 下書きフォルダ内の最初の下書きメッセージ
  var draftId = draft.getId();
  var draftById = GmailApp.getDraft(draftId);
  Logger.log(draft.getMessage().getSubject() == draftById.getMessage().getSubject());
}

Return
String - ドラフトID

下書きメッセージ取得[getMessage()]

getMessage()
このドラフトを表すGmailMessageを返します。

function getMessageSample() {
  var draft = GmailApp.getDrafts()[0]; // 下書きフォルダ内の最初の下書きメッセージ
  var message = draft.getMessage();
  Logger.log(message.getSubject());
}

Return
GmailMessage - このドラフトの内容を表すメッセージ

下書きメッセージID取得[getMessageId()]

getMessageId()
このドラフトを表すGmailMessageのIDを返します。

function getMessageIdSample() {
  var draft = GmailApp.getDrafts()[0]; // 書きフォルダ内の最初の下書きメッセージ
  var messageId = draft.getMessageId();
  Logger.log(messageId == draft.getMessage().getId());
}

Return
String - メッセージID

下書きメール送信[send()]

send()
このドラフトメールメッセージを送信します。メールのサイズ(ヘッダーを含む)は制限されています。

function sendSample() {
  var draft = GmailApp.getDrafts()[0]; // 下書きフォルダ内の最初の下書きメッセージ
  var msg = draft.send(); // それを送る
  Logger.log(msg.getDate()); // ほぼ現在のタイムスタンプである必要があります
}

Return
GmailMessage - 新しく送信されたメッセージ

下書きメッセージ変更1[update(受信者, 件名, 本文]

update(recipient, subject, body)
このドラフトメッセージの内容を置き換えます。メールのサイズ(ヘッダーを含む)は制限されています。

function update1Sample() {
  // 以下のコードは、現在の日付と時刻でドラフトメールを更新します。
  var draft = GmailApp.getDrafts()[0]; // 下書きフォルダ内の最初の下書きメッセージ
  var now = new Date();
  draft.update("mike@example.com", "current time", "The time is: " + now.toString());
}
Parameters
名前タイプ説明
recipientStringメールアドレスのコンマ区切りリスト。
subjectStringメールの件名。(最大250文字)
bodyStringメールの本文。

Return
GmailDraft - 新しく更新されたドラフト

下書きメッセージ変更2(オプション)[update(受信者, 件名, 本文, オプション)]

update(recipient, subject, body, options)
オプションの引数を使用して、このドラフトメッセージの内容を置き換えます。電子メールには、プレーンテキストまたはHTML本文を含めることができます。メールのサイズ(ヘッダーを含む)は制限されています。

function update2Sample() {
  // GoogleドライブのファイルをPDFとして添付してドラフトメールを更新します。
  var draft = GmailApp.getDrafts()[0]; // 下書きフォルダ内の最初の下書きメッセージ
  var file = DriveApp.getFileById('1234567890abcdefghijklmnopqrstuvwxyz');
  draft.update('mike@example.com', 'Attachment example', 'Please see attached file.', {
      attachments: [file.getAs(MimeType.PDF)],
      name: 'Automatic Emailer Script'
  });
}
Parameters
名前タイプ説明
recipientStringメールアドレスのコンマ区切りリスト。
subjectStringメールの件名。(最大250文字)
bodyStringメールの本文。
optionsObject以下にリストされているように、拡張パラメーターを指定するJavaScriptオブジェクト。
Advanced parameters
名前タイプ説明
attachmentsBlobSource[]電子メールで送信するファイルの配列。
bccStringBCCへの電子メールアドレスのコンマ区切りリスト。
ccStringCCへの電子メールアドレスのコンマ区切りリスト。
fromString電子メールの送信元アドレス。GmailApp.getAliases()によって返される値のいずれかである必要があります。
htmlBodyString設定されている場合、HTMLをレンダリングできるデバイスは、必要なbody引数の代わりにHTMLを使用します。メールのインライン画像がある場合は、HTML本文にオプションのinlineImagesフィールドを追加できます。
inlineImagesObject画像キー(String)から画像データ(BlobSource)へのマッピングを含むJavaScriptオブジェクト。これは、htmlBodyパラメーターが使用され、の形式でこれらの画像への参照が含まれていることを前提としています。
nameString電子メールの送信者の名前。(デフォルト:ユーザーの名前)
replyToStringデフォルトの返信先アドレスとして使用するメールアドレス。(デフォルト:ユーザーのメールアドレス)

Return
GmailDraft - 新しく更新されたドラフト

最後に

Gメールの下書き(ドラフト)機能のまとめをご紹介させていただきました.

スプレッドシートと組み合わせるとさらに効果的です。

必要に応じて、有益な情報でさらに更新していきたいと思います。

プログラミングスキルを向上させるためには、本を読むだけでは脳にインプットされませんね。

実際に手を動かしてアウトプットしまくるのが一番の近道だと思います。

実際にサンプルソースをコピーして実行した結果がどうなるかを体験してみてください。

自分なりのアレンジを加えたり、なぜエラーになるのかを考え、何度も試行錯誤して問題を解決しまくり、着実に理解しながらスキルを向上させていきましょう。

GASはExcelVBAとはかなり違いますが、ベースとなっているJavaScriptは覚えて損はないプログラミング言語なのでショートカットキーなどと組み合わせてぜひ活用してみてください。

Googleスプレッドシート全ショートカットキー一覧はこちら↓↓↓

Googleスプレッドシートの使い方や機能がわかるショートカットキー全まとめ一覧【初心者こそ必見】
表計算ソフトとして、まだまだExcelのシェア率は高いですが、GoogleスプレッドシートにはExcelにはない超強力な関数があったり、Excelとは違って常に最新版を無料で使用できます。なにより、インターネットを使ったオンライン...

ショートカットキー一覧にもGASメソッドを載せています。どの操作からどのメソッドが呼ばれるのかイメージしてください。




快速ワーク
スポンサーリンク
スポンサーリンク
快 ブログ

コメント

//▼2023/04/08追加 //https://lovagelab.com/posts/3406/ //▲2023/04/08追加