スキルアップを始める!

【GoogleAppsScript(GAS)】Gmail(Gメール)のメール本文から特定の文字を抽出して一部のみを抜き出してスプレッドシートに書き込む方法〜PART1|正規表現

GAS(GoogleAppsScript)
GAS(GoogleAppsScript)
この記事は約4分で読めます。

※記事中に広告情報を含みます。

\ワードプレスのスキルアップはこちら!/ WordPress入門読本

例えば、「Gmailの本文から特定の文字を抽出して一部のみを抜き出す」といったことがしたい、というというこもあるかと思います。

function searchContactMail() {
  const search_text = '"銀河鉄道の夜"';  
  const threads = GmailApp.search(search_text, 0, 1);  
  const messagesThreads = GmailApp.getMessagesForThreads(threads);
  var messe_body = messagesThreads[0][0].getPlainBody();  
  SpreadsheetApp.getActiveSheet().getRange(1, 1).setValue(messe_body); 
}

こちらを実行すると、セル「A1」に検索の件名を含んだメールの本文が抽出されて、書き出されます。

※実行時に警告やら何やらが色々と出るかと思いますが、そのあたりは過去の記事をご参考頂ければと思います。

1行目を見出しにしたいので、2行目から書き込むようにします。

  SpreadsheetApp.getActiveSheet().getRange(2, 1).setValue(messe_body);

2行目に書き込みができました。

1行目に見出しを作っておきます。

ここから、

分類: 著者
作家名: 宮沢 賢治
作家名読み: みやざわ けんじ
ローマ字表記: Miyazawa, Kenji
生年: 1896-08-27
没年: 1933-09-21

これらの一部を抽出して、他のセルに書き出しをしてみたいと思います。

文字を抽出後の変数を準備

一旦、文字全文用の変数に格納して、そこから「.replace」を使ってみます。

function searchContactMail() {
  const search_text = '"銀河鉄道の夜"';  
  const threads = GmailApp.search(search_text, 0, 1);
  const messagesThreads = GmailApp.getMessagesForThreads(threads);
  //メッセージ全文
  const messe_body = messagesThreads[0][0].getPlainBody();
  SpreadsheetApp.getActiveSheet().getRange(2, 1).setValue(messe_body);
  //抽出した変数1
  const messe1 = messe_body.replace("「ではみなさんは、そういうふうに川だと言いわれたり、乳ちちの流ながれたあとだと言いわれたりしていた、","");  
  SpreadsheetApp.getActiveSheet().getRange(2, 2).setValue(messe1);
}

そうすると、本文の冒頭の文字がreplaceによって削除されました。

あとは、このreplaceを使って、不要な部分を削除していきます。

正規表現

以前書いた「正規表現」を使って、不要な部分を削除します。

「テスト」より後の文字を抜き出す

(?<=テスト)(.*)

「テスト」より前の文字を抜き出す

(.*)(?=テスト)

このような感じで、いろいろな条件を入れると、特定の文字列などを抽出できるようになります。

new RegExp

GASで正規表現を扱うときには「RegExp」を使います。

const regtxt = new RegExp('作家名:  + '.*?' + '\r' );

これで、変数regtxtに正規表現の状態で格納されることになります!

今回は、regtxtに「/作家名:.*?\r/」が入りました。

まとめ

あとは正規表現を上手く使って、特定の文字列を抽出してセルに入れていけば完成するかと思います!ひとまず、長くなりそうでしたので、続きはまた!

ご参考下さい^o^)/

URLをコピーしました!