×
採用サイトはこちら

転記漏れを防ぐ!GASでGmailのメールをkintoneへ自動登録

はじめに

本記事では、Gmailで受信したメール情報をGoogle Apps Script(GAS)を利用してkintoneへ自動登録する仕組みを紹介します。

想定する業務ケースとして、営業部署等が受信する大量のメールの中から、他社から届いた業務に関するメールを確認し、必要な情報を管理ファイルへ転記する作業を手作業で行う状況を想定しています。
日常的に複数部署/チーム宛に大量のメールが届くため、対象メールを目視で確認して必要な情報を転記する運用では、取得漏れや転記漏れ、対応漏れが発生する可能性があります。

そこで、可能な限りコストをかけず、GASを用いてGmailのメール情報をkintoneへ自動登録する方法を検討しました。
検証の結果、GASを利用して対象メールからあらかじめ定義した必要情報を取得し、kintoneへ自動登録できる手法が確認できました。

なお、以下で紹介する内容は技術検証として試したサンプル例です。 実運用では権限管理やエラー処理を考慮する必要があります。

目次

背景・課題

どんな作業が発生していたか

作業者が受信した業務メールを一件ずつ確認し、対応が必要な内容について、必要な情報を管理ファイルやアプリへ手作業で転記していました。
日々大量に届く社内外の連絡の中に埋もれてしまうことも多く、担当者がその都度目視で探し出し、手入力で転記を行わなければなりませんでした。

業務上の課題

業務を担当していた営業事務の方がメール確認と転記作業に多くの時間を取られており、本来対応すべき業務に十分な時間を割けていない様子が見受けられました。
また、目視での確認や手作業による転記では、重要な依頼の確認漏れや転記時の入力ミス、それに伴う対応の遅延が生じやすいというリスクがありました。

課題解決に向けた検討

そこで、リスクや作業者の負担を軽減するために、既存のメール運用ルールを活用しながら自動化する方法を検討しました。
なお、現場で新たなツール・プラグイン導入や追加コストをかけることが難しいことを想定し、「できるだけコストを抑える」方針としました。

構成イメージ

ここでは、Google Apps Script(GAS)を用いてGmailとkintoneを連携し、特定のGmailラベルが付与されたメールについて、スレッド内の最初のメールから件名・本文・message IDを取得し、kintone APIを利用してレコード登録を行う仕組みを紹介します。

登録完了後は、同一スレッドの重複登録を防ぐため、Gmail側に「登録済み」ラベルを付与します。
本処理は時間主導型トリガーにより定期的に実行されます(以下は、6時間おきに実行する場合のトリガー設定例です)。

GASでの連携例

以下では、Gmailで受信した業務メールを対象に、kintoneへ自動でレコード登録するサンプルスクリプトを紹介します。
実装の全体像を掴みやすくするため一部処理は簡略化しています。

事前準備

  • Gmail側で対象メールを識別するためのラベル(例:業務依頼)をあらかじめ作成し、対象となるメールにラベルが付与されるようフィルタ等を設定します。
    例:特定の送信元から届いた業務関連メールに「業務依頼」ラベルを付与し、広告等の対象外メールは除外します。
  • 処理済みメールを判別するため、「登録済み」ラベルをあらかじめ作成します。
    kintoneへの登録完了後は、対象スレッドに「登録済み」ラベルを付与し、次回以降の処理対象から除外します(Gmailのラベルはスレッド単位で付与されるため、同じスレッドが繰り返し処理されるのを防ぎます)。

処理の概要

本サンプルでは、以下の流れで処理を行います。

  1. Gmailで特定のラベルが付いたメールを検索
  2. スレッド内の最初のメールから件名・本文・message IDを取得
  3. kintone APIを利用してレコードを登録
  4. 登録完了後、Gmail側に「登録済み」ラベルを付与
  5. エラー発生時は管理者へ通知メールを送信

Google Apps Script(GAS)のエディタ画面(script.google.com)にてスクリプトを作成・実行します。

初期設定(サンプル)

// kintone接続設定(※値はダミーです)
const KINTONE_DOMAIN = 'example';
const KINTONE_APP_ID = 999;
const KINTONE_API_TOKEN = 'xxxxxxxxxxxxxxxxxxxx';

// フィールドコード
const SUBJECT_FIELD_CODE = 'mail_subject';
const BODY_FIELD_CODE = 'mail_body';
const MAIL_ID_FIELD_CODE = 'mail_id';

// Gmailラベル設定
const TARGET_LABEL = '業務依頼';
const DONE_LABEL   = '登録済み';

※ 実際のドメイン名・アプリID・APIトークンは環境ごとに適切に設定してください。

ステップ1:Gmailで特定のラベルが付いたメールを検索

const query = `label:${TARGET_LABEL} -label:${DONE_LABEL}`;
const threads = GmailApp.search(query, 0, 10);
  • 未処理のメールのみを対象にすることで重複登録を防止します。
  • 検索件数を制限することで一度に大量処理しない設計となります。

ステップ2:スレッド内の最初のメールから件名・本文・message IDを取得

検索結果のスレッドから最初のメールを取り出し、件名・本文・message IDを取得します。

// スレッド内の最初のメールから情報を取得する処理
const firstMessage = threads[0].getMessages()[0];
const subject = firstMessage.getSubject();
const body = firstMessage.getPlainBody();
const mailId = firstMessage.getId();

実運用に向けたワンポイント:必要な情報だけを抽出するには
本サンプルでは処理の全体像を分かりやすくするため、メールの「本文全体」をそのままkintoneへ登録しています。
実際の運用で「本文の必要な情報(特定の項目)のみを選別して転記」したい場合は、GASのコードに一手間加えることで対応可能です。
例えば、JavaScriptの正規表現(match メソッドなど)を使用すれば、取得した本文テキストの中から「会社名」「氏名」「お問い合わせ内容」といった特定の項目だけを抽出し、kintoneの個別のフィールドへ分けて登録する仕組みへと拡張できます。

ステップ3:kintone APIを利用してレコードを登録

取得した情報を payload にセットし、kintone API(UrlFetchApp)を呼び出してレコードを新規登録します。

const payload = {
  app: KINTONE_APP_ID,
  record: {
    [SUBJECT_FIELD_CODE]: { value: subject },
    [BODY_FIELD_CODE]:    { value: body },
    [MAIL_ID_FIELD_CODE]: { value: mailId }
  }
};
  • Gmailの message ID を保持することで、同一メールの重複登録チェックが可能です。
  • 件名・本文をそのまま登録するため後続の担当者が判断しやすくなります。

ステップ4:登録完了後、Gmail側に「登録済み」ラベルを付与

kintoneへの登録が成功したスレッドに対して、「登録済み」ラベルを付与して次回からの処理対象外にします。

// 対象スレッドへ登録済みラベルを付与する処理
const doneLabelObject = GmailApp.getUserLabelByName(DONE_LABEL);
threads[0].addLabel(doneLabelObject);

ステップ5:エラー発生時は管理者へ通知メールを送信

本サンプルでは、以下のケースを想定しています。

  • 登録成功
  • 重複エラー(既存レコードあり)
  • その他のエラー(必須項目不足など)

エラー発生時は管理者宛に通知メールを送信することで気づかないまま処理が止まることを防ぎます。

MailApp.sendEmail(
  NOTIFICATION_EMAIL,
  "kintone連携エラー",
  "スクリプト実行中にエラーが発生しました"
);

検証結果

上記の構成でGASを実行して検証した結果、対象ラベルが付与されたGmailのメールから件名・本文・message IDを取得し、kintoneへレコードとして自動登録できることを確認しました。
また、登録完了後に対象スレッドへ「登録済み」ラベルを付与することで、次回以降の処理対象から除外し、同一メールの重複登録を防止できることも確認しました。
これにより、対象メールの確認からkintoneへの転記までの手作業を減らせる手法が確認できました。

まとめ

本記事では、GASを用いてGmailのメール情報をkintoneへ自動登録する仕組みについて考え方と構成イメージを紹介しました。

この方法は

  • 追加コストをかけずに(※)
  • 比較的短時間で
  • メール確認・転記業務を自動化できる

というメリットがあります。

※ kintone APIを利用するため、kintoneのスタンダードコース以上をご利用中の環境が前提となります。

本構成は、Google Workspaceを利用しており、Gmail上の定型的な確認・転記業務を追加コストを可能な限り抑えながらkintoneと連携したい場合には有効な選択肢だと感じました。

一方で、GASの管理者が限定されやすく、処理の属人化が発生しやすい点には注意が必要です。
処理量が多い場合や、より複雑なエラー処理・権限管理が必要な場合には、GAS以外の方法も含めて検討する必要があります。

本記事が、同様のメール確認・転記業務の効率化を検討する際の参考になれば幸いです。

We Are Hiring!

今回、私は技術検証としてGASとkintone APIを用いたメール確認・転記業務の自動化に取り組みました。
GASやAPI連携などを活用し、身近な業務課題を技術で解決することに関心をお持ちの方もいるのではないでしょうか。

FindConsultingでは、入社後も継続的に学べる環境を整えています。
各種資格取得支援まで、エンジニアとしての基礎やスキルアップをしっかりバックアップする体制があります。

「技術を学び続けたい」「業務上の課題を技術で解決したい」と感じているエンジニアの方、ぜひ一緒に成長しませんか?

現在、FindConsultingでは学ぶ意欲のある仲間を募集しています。
「話を聞いてみたい」くらいの気持ちで、一度カジュアル面談でお話しましょう。

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

この記事を書いた人

弊社FindConsulting在籍のエンジニアです。
PMOとしてWEBシステムの品質保証と業務平準化プロジェクトに参画し、プロジェクト成功に向けた品質管理を牽引してきました。
テスト計画の策定、設計、実施、そしてテスト業務のリードといった一連の経験を通じて、業務の属人化を解消し、チーム全体の業務効率向上に寄与してきました。
これまで業務改善してきた実務経験をもとに、本ブログでは、品質管理や業務改善に役立つ技術情報を発信します。

目次