注文や問い合わせのメールを、1 通ずつ開いて表に写している。そんな作業は、Google Apps Script(GAS)で自動にできます。ここでは「決めたラベルの付いたメールを、日時・差出人・件名・本文の頭だけ、シートに 1 行ずつ足す」仕組みを作ります。
■ 準備:シートとラベルを作る
1. 新しいスプレッドシートを作り、シートの名前を「受信」にする
2. 1 行目に「日時」「差出人」「件名」「本文」と見出しを入れる
3. Gmail で、記録したいメールに付けるラベル(例:「注文」)を作る。フィルタで自動でラベルが付くようにしておくと楽です
■ 手順1:スクリプトを貼る
スプレッドシートの「拡張機能」→「Apps Script」を開き、中身を消して次を貼ります。
function recordMail() {
const sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName('受信');
const done = GmailApp.getUserLabelByName('記録済み') || GmailApp.createLabel('記録済み');
const threads = GmailApp.search('label:注文 -label:記録済み', 0, 50);
threads.forEach(function (thread) {
thread.getMessages().forEach(function (m) {
sheet.appendRow([m.getDate(), m.getFrom(), m.getSubject(), m.getPlainBody().slice(0, 200)]);
});
thread.addLabel(done);
});
}
書き出したメールには「記録済み」のラベルが付くので、次に動かしたときに同じメールが二重に入りません。
■ 手順2:一度動かして許可する
上の「実行」を押すと、Gmail とスプレッドシートを使う許可を求められます。「このアプリは Google で確認されていません」と出たときは、こちらの記事の手順で進めてください。
■ 手順3:決まった時間に自動で動かす
左の時計の印(トリガー)から、recordMail を「時間主導型」で 1 時間ごとなどに設定すると、手で押さなくても動きます。設定のしかたはこちらにまとめています。
■ うまくいかないときに確かめること
・シートの名前が「受信」になっているか(違うと止まります)
・ラベルの名前が、スクリプトの 'label:注文' と同じか。ラベル名に空白があるときは label:"お 問い合わせ" のように囲みます
・一度にたくさんのメールがあると時間がかかるので、50 件ずつにしています。残りは次の回に入ります
・本文から金額や注文番号だけを取り出したい場合は、メールの形に合わせた処理が別に要ります
本文から決まった項目を取り出して列に分けたい、通知も送りたい、という場合はこちらでお受けしています。
※この記事は AI(Claude)の助けを借りて書いています。