Q&A
実現したいこと
はじめまして。
当方知識が無いため色々調べ、コードを書いてみたのですが抽出できません。
どなたか知恵をお貸しいただけないでしょうか?
前提
以下のようなメールから、自動でスプレッドシートに項目ごとに抽出したいと思っております。
[フォームズ]------------------------------
ID:S000000 投稿がありました
[投稿日時] 2023年00月00日 10時00分00秒
お申込日 : 00月00日
■お名前
山田 一郎 様
■お名前(フリガナ)
ヤマダ イチロウ 様
■ご住所※全角25文字以内(半角不可)
[郵便番号] : 〒062-0000
[都道府県] : 北海道
[市区町村] : 札幌市○○区
[町名番地] : 美園○条○丁目○-○
[建物名] : ハイツ○○-101
■電話番号区分1
3.携帯
■連絡
3:夕方以降
======================
抽出したい情報は、
■お名前の一つ下の行の情報(様を抜きたい)
■お名前(フリガナ)の一つ下の行の情報(様を抜きたい)
■ご住所※全角25文字以内(半角不可)の
[郵便番号] : 以降の情報
[都道府県] : 以降の情報
[市区町村] : 以降の情報
[町名番地] :以降の情報
[建物名] : 以降の情報
■電話番号区分1の一つ下の行の情報
■連絡の一つ下の行の情報
を横並びにセルに抽出し自動で追加されていくようにしたいと考えております。
該当のソースコード
function searchContactMail() {
const title = 'subject:【フォームズ】';
// const start = 0;
// const max = 10;
const threads = GmailApp.search(title);
const messagesForThreads = GmailApp.getMessagesForThreads(threads);
const values = [];
const sheet = SpreadsheetApp.getActiveSheet();
const lastRow = sheet.getLastRow();
for(const messages of messagesForThreads){
const message = messages[0];
var plainBody = message.getPlainBody();
Logger.log(plainBody);
const record = [
message.getId(),
plainBody.match(/■お名前(.)/),
plainBody.match(/■お名前(フリガナ)(.)/),
plainBody.match(/■ご住所※全角25文字以内(半角不可)(.)/),
plainBody.match(/[郵便番号] : (.)/),
plainBody.match(/[都道府県] : (.)/),
plainBody.match(/[市区町村] : (.)/),
plainBody.match(/[建物名] : (.)/),
plainBody.match(/電話番号区分1(.)/),
plainBody.match(/■連絡(.*)/),
]; values.push(record); Logger.log(record);
}
if(values.length > 0){
sheet.getRange(lastRow + 1, 1, values.length, values[0].length).setValues(values);
}
const label = GmailApp.getUserLabelByName('処理済み');
threads.forEach(thread => thread.addLabel(label));
}
======================
各項目の後の情報を抽出したいのですが、■がついた項目名しか抽出できません
お手数ですがどのようにGASのコードを書けばよいか
ご教授お願いいたします。
回答1件
あなたの回答
tips
プレビュー
下記のような回答は推奨されていません。
このような回答には修正を依頼しましょう。
2023/02/17 13:39
2023/02/19 21:39