gakkie プログラミング 備忘録

tech::expert(現tech camp) 45期

【GAS】メルカリからの通知をLINEで確認できるようにする。(備忘録)

きっかけ

  • 最近メルカリを始めた
  • 売買などの通知は全て登録したメールアドレスに来る
  • どうせなら1つのツールで管理したい
  • 通知が来たらlineに送るようにしよう!!

手段

GASを使う

結論

使いこなせれば多くの業務の改善につながるため積極的に活用していきたい。

具体的な方法

先にやる設定

  • 個人グループを作成。
  • グループのアイコンを変更。
  • アイコンを見ただけでどのメールか視覚的に判別ができる

  1. ホーム画面
  2. f:id:shuzou555:20190531141823p:plain
  3. 個人グループ作成
  4. f:id:shuzou555:20190531140912p:plain
  5. 何もせずに次へ
  6. f:id:shuzou555:20190531140850p:plain
  7. 任意の名前をつける
  8. f:id:shuzou555:20190531140832p:plain
  9. 画像は自分の好きなものに変更する

1.トークンの発行と設定

  1. notify-bot.line.me
  2. ログインまたはサインアップ
  3. 右上のアイコンからマイページへ
  4. トークンを発行する(ページ下)
  5. トークン名を作成
  6. グループを指定する。初めに作った個人グループを指定
  7. トークンを発行
  8. コピー(※注意必ずメモ帳に貼っておくこと!!)

2.GoogleDriveへ移動

  1. MyDrive→その他→GoogleAppScrIpt
  2. コードをかく
  3. subjectに【メルカリ】と入力
  4. トークンキーを貼る
  5. 保存して実行
  6. 編集(左上)→現在のプロジェクトのトリガ
  7.  f:id:shuzou555:20190531150549p:plain
  8. トリガを設定
  9. f:id:shuzou555:20190531150808p:plain

Lineに移動

  • Line notifyをグループに招待する

コード

var FindSubject = 'subject:(【メルカリ】)';

function getMail(){

//指定した件名のスレッドを検索して取得 var myThreads = GmailApp.search(FindSubject, 0, 30); //スレッドからメールを取得し二次元配列に格納 var myMessages = GmailApp.getMessagesForThreads(myThreads);

for(var i in myMessages){ for(var j in myMessages[i]){

  <span class="synComment">//スターがないメッセージのみ処理   </span>
  <span class="synStatement">if</span>(!myMessages<span class="synIdentifier">[</span>i<span class="synIdentifier">][</span>j<span class="synIdentifier">]</span>.isStarred())<span class="synIdentifier">{</span> 

    <span class="synIdentifier">var</span> strDate = myMessages<span class="synIdentifier">[</span>i<span class="synIdentifier">][</span>j<span class="synIdentifier">]</span>.getDate();
    <span class="synIdentifier">var</span> strSubject = myMessages<span class="synIdentifier">[</span>i<span class="synIdentifier">][</span>j<span class="synIdentifier">]</span>.getSubject();
    <span class="synIdentifier">var</span> strMessage = myMessages<span class="synIdentifier">[</span>i<span class="synIdentifier">][</span>j<span class="synIdentifier">]</span>.getPlainBody().slice(0,300);

    <span class="synComment">//LINEにメッセージを送信</span>
    sendLine(strDate,strSubject,strMessage);

    <span class="synComment">//処理済みのメッセージをスターをつける</span>
    myMessages<span class="synIdentifier">[</span>i<span class="synIdentifier">][</span>j<span class="synIdentifier">]</span>.star(); 
  <span class="synIdentifier">}</span>
<span class="synIdentifier">}</span>

} }

function sendLine(strDate,strSubject,strMessage){

//Lineに送信するためのトーク var strToken = "発行したトークン"; var options = { "method" : "post", "payload" : "message=" + strDate + strSubject + strMessage, "headers" : {"Authorization" : "Bearer "+ strToken}

};

UrlFetchApp.fetch("https://notify-api.line.me/api/notify",options); }

参考にしたサイト

asatte.biz