6
4

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.

Udemy ビジネスパーソンに贈る業務効率化大全 〜Google Apps Scriptによる業務の自動化〜 セクション9:業務効率⑥:Gmailをスプレッドシートに抽出する

Posted at

ワークフロー・必要な知識

ワークフロー

・Gmailから特定の情報に当てはまるような情報を取得する
・取得した情報をスプレッドシートに反映させる

必要な知識

・メール情報を取得する方法
・スプレッドシートに情報を書き込む方法

メールを取得する

・問合せのメールを取得するという条件のもとでメールを取得していく。
https://support.google.com/mail/answer/7190?hl=ja
 上のページでGmailで使用できる検索演算子を見つけることが出来る。
・Gmailのメールを検索というところから、件名で[問合せ]と条件を指定することもできる。
・一回の抽出で取得できる情報は500個まで。
・GASに以下のようにコードを書くことでメールを取得することが出来る。

gas
       function getMessage() {
   var condition = 'subject:([問合せ])';
   var start = 0;
   var max = 500;
   var threads = GmailApp.search(condition, start, max);
   var messages = GmailApp.getMessagesForThreads(threads);
 
   }

メールの必要な情報を取得する

getPlainBodyでメールの内容を取得することが出来る。
・取得したい情報(日にちや名前、メールアドレスなど)を以下のように取得することが出来る。
splitは文字列を分割、区切ることが出来、今回は取得したい情報の最初と最後を区切って情報を取得している。

gas
    var body = messages[0][0].getPlainBody();
    var date = messages[0][0].getDate();
    var name = body.split('お名前:')[1].split(' 様')[0];
    var email = body.split('メールアドレス')[1].split('\n')[0];
    var title = body.split('お問い合わせタイトル')[1].split('\n')[0];
    var content = body.split('お問い合わせ内容')[1].split('- - - - - - - -')[0];

1つのメールをシートに書き込む

SpreadsheetApp.getActiveSpreadsheet();ss. getSheetByName('シート名');でスプレッドシートを取得する
sheet.getRange(何行目から, 何列目から, 何行、何列目まで). setValues([data])と書くことでスプレッドシートに指定した範囲で情報を書き込むことが出来る。setValues([data]で配列を二次元配列にできる。

gas
   var ss = SpreadsheetApp.getActiveSpreadsheet();
   var sheet = ss.getSheetByName('メール一覧');
   
   var data = [date, name, email, title, content];

   var firstRow = 2;
   sheet.getRange(firstRow, 1, 1,data.length).setValues([data]);

全てのメールをシートに書き込む

forEach()を使うことで全てのメールの情報をスプレッドシートに書き込む事が出来る。

gas
   messages.forEach(function(message)){
       var body = message[0].getPlainbody();
 
       var date = message[0].getdate();
       var name = body.split('お名前:')[1].split(' 様')[0];
       var email = body.split('メールアドレス')[1].split('\n')[0];
       var title = body.split('お問い合わせタイトル')[1].split('\n')[0];
       var content = body.split('お問い合わせ内容')[1].split('- - - - - - - -')[0];
 
       var data = [date, name, email, title, content];

       sheet.getRange(firstRow, 1, 1,data.length).setValues([data]);

       firstRow++;
   });

##最後に
洗練さんでインターン(Udemy ビジネスパーソンに贈る業務効率化大全 〜Google Apps Scriptによる業務の自動化〜 セクション9:業務効率⑥:Gmailをスプレッドシートに抽出する)です。
Udemy ビジネスパーソンに贈る業務効率化大全 〜Google Apps Scriptによる業務の自動化〜 セクション9:業務効率⑥:Gmailをスプレッドシートに抽出する

最後に
現在ここでインターンしています。
まだまだ駆け出しですが頑張ります!やる気は人一倍です!
洗練

6
4
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
6
4

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?