0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

GMAILから特定の文字を抽出⇒スプレッドに出力する方法

Posted at

##はじめに
COBOLしか触ったことがない元エンジニアがGASにてアプリケーションの開発をしてみました。鉞は投げず暖かく見守ってください。。

##【概要】
社内で飛び交っているメール群から、必要な情報だけを抽出して
スプレッドシートに書き出すプログラムを作成しました。

##【詳細】
・件名に「検索ワード1」と「検索ワード2」を持っているメールを抽出
・メール本文から、「特定の文字」の後ろにある数字(桁数ランダム、かつ先頭が0以外)
 をスプレッドシートに出力する

##【ソースコード】

function myfanction(){
  var mailQuery = 'subject:検索ワード1 subject:検索ワード2 newer_than:1m';
//「件名に検索ワード1、検索ワード2を持っている」「受信から1か月以内」
 
  var threads = GmailApp.search(mailQuery);  
  var messages = GmailApp.getMessagesForThreads(threads);
//条件に合致するメールを抽出  

  var sheet = SpreadsheetApp.getActiveSheet();
  
  for(var i=0; i<messages.length; i++){
    var plainBody = messages[i][0].getPlainBody();
    var hitText = plainBody.match(/'特定の文字'.*/);
//抽出したメール本文から、特定の文字を抽出

    if (hitText ==null){
      continue;
    } 
//抽出したい文字が見つからなかった場合の処理

    var deletedText = hitText[0].replace('特定の文字', '').replace(' ', '');
//特定の文字の後ろにある数字を抽出したいので、「特定の文字」は削除。
//ゴミ(スペース)も削除    

    var resultText = deletedText.match(/^\d+/);
//頭の文字から、文字が終わる箇所までを抽出

    if (resultText ==null){
      continue;
    } 

    sheet.appendRow(resultText);
  }
}

##大変だったこと

  • hitText、resultText変数がnullだった場合の処理を怠っており、
    例外が発生した
  • 配列の概念をぶっちゃけ理解していなかった。(まだ出来ていないかもしれないのでこれから頑張る)

以上

0
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?