解決済

特定のメールをLINEに転送したい

  • 相談者:BB
  • 2021/03/11 17:47
ネクストエンジンからくる在庫アラート(のみ)を、在庫管理担当者のLINEへ送りたいのですが、方法をアドバイス頂けないでしょうか。 IFTTTを使っての方法………(省略)………
ログインして全文を読む
  • 返信者:(DELETE1684735187)ECマスターズ鈴木
  • 2021/03/11 17:53
ECマスターズの鈴木です。 > ネクストエンジンからくる在庫アラート(のみ)を、 > 在庫管理担当者のLINEへ送りたいのですが、方法をアドバイス頂けな………(省略)………
ログインして全文を読む
  • 返信者:(DELETE1684735187)ECマスターズ鈴木
  • 2021/03/11 19:34
ECマスターズの鈴木です。 > ネクストエンジンからくる在庫アラート(のみ)を、 > 在庫管理担当者のLINEへ送りたいのですが、方法をアドバイス頂けな………(省略)………
ログインして全文を読む
  • 返信者:BB (質問者)
  • 2021/03/11 20:21
ありがとうございます。 変更する項目の 22行目の (‘is:unread label:”ループイフダン”‘) が通知する条件です。コメントに書いてある………(省略)………
ログインして全文を読む
  • 返信者:BB (質問者)
  • 2021/03/12 06:35
補足です。 グレイアウトしてるのは保存していないからみたいですが、保存しようとしましたら構文エラーで保存できませんでした。 構文エラー: SyntaxE………(省略)………
ログインして全文を読む
  • 返信者:(DELETE1684735187)ECマスターズ鈴木
  • 2021/03/12 20:29
ECマスターズの鈴木です。 > ループイフダン部分は具体的にどのことを指すのでしょう?「ラベル」とは? ループイフダンは、FXの売買システムとなりま………(省略)………
ログインして全文を読む
  • 返信者:BB (質問者)
  • 2021/03/12 20:43
鈴木さん、細かいご説明ありがとうございます。 > こちらは後述するLINEのアクセストークンがプログラムに入力されていないことが > 原因だと考えられま………(省略)………
ログインして全文を読む
  • 返信者:BB (質問者)
  • 2021/03/12 21:09
鈴木様 解決しました。 原因は「あるある」でした。目を凝らしてプログラムを追いかけてましたら「>」をいくつか発見。 直したらエラー無しで保存でき………(省略)………
ログインして全文を読む
  • 返信者:BB (質問者)
  • 2021/03/13 14:02
結果報告です。 トリガーはうまく動いたようですが、LINEへメッセージは来ませんでした。 何が原因として考えられるでしょうか。再チェックすべき点をご教授………(省略)………
ログインして全文を読む
  • 返信者:ECマスターズ海老塚
  • 2021/03/13 14:09
ECマスターズの海老塚です。 ご連絡いただきまして、 誠にありがとうございます。 こちらにつきましては、 休み明けに担当より確認してご回答させて………(省略)………
ログインして全文を読む
  • 返信者:(DELETE1684735185)ECマスターズ田中
  • 2021/03/14 11:28
ECマスターズの田中です。 LINEからの返答内容を確認するため、お手数ですがソースに含まれる UrlFetchApp.fetch("https://n………(省略)………
ログインして全文を読む
  • 返信者:BB (質問者)
  • 2021/03/14 11:39
田中様、お休みにありがとうございます! 早速実行してみましたが、ログには何も表記されませんでした。 実行ログには 11:36:59 お知らせ 実行………(省略)………
ログインして全文を読む
  • 返信者:(DELETE1684735185)ECマスターズ田中
  • 2021/03/14 12:20
ECマスターズの田中です。 Gmail検索の結果1通も見つからなかった、 送信メッセージを正しく作成できなかった、 などの理由により、LINEへの送信………(省略)………
ログインして全文を読む
  • 返信者:BB (質問者)
  • 2021/03/14 12:33
早速にありがとうございます。 以下、実行ログです。 12:32:23 お知らせ 実行開始 12:32:24 情報 通知対象のメール数: 1 12………(省略)………
ログインして全文を読む
  • 返信者:(DELETE1684735185)ECマスターズ田中
  • 2021/03/14 12:56
ECマスターズの田中です。 それでは、改めて1通以上未読にしていただいた上で、 先程差し替えていただいた var response = UrlFetc………(省略)………
ログインして全文を読む
  • 返信者:BB (質問者)
  • 2021/03/14 13:38
ありがとうございます。 実行ログは前回と変わらず 13:36:29 お知らせ 実行開始 13:36:29 情報 通知対象のメール数: 1 13:………(省略)………
ログインして全文を読む
  • 返信者:(DELETE1684735185)ECマスターズ田中
  • 2021/03/14 14:30
ECマスターズの田中です。 それでは、 send_line(new_Me[i]) 上記1行を console.log(`send_line直前: $………(省略)………
ログインして全文を読む
  • 返信者:BB (質問者)
  • 2021/03/14 14:41
ありがとうございます。 お付き合い頂き申し訳ありません。 結果は前回と同じでございました。念の為トークンも発行し直してトライしましたが、同じでした。 ………(省略)………
ログインして全文を読む
  • 返信者:(DELETE1684735185)ECマスターズ田中
  • 2021/03/14 15:06
ECマスターズの田中です。 ソース全体をお送りいただき、ありがとうございます。 いただいたソースを確認したところ、 > を (大なり)にご修正い………(省略)………
ログインして全文を読む
  • 返信者:BB (質問者)
  • 2021/03/14 15:11
そんなケアレスミスでしたか! 申し訳ありません。直すところは2箇所だけで良かったでしょうか。 実行しましたところエラーを吐きましたので、お送りしますね。………(省略)………
ログインして全文を読む
  • 返信者:BB (質問者)
  • 2021/03/14 15:18
LINE Notifyにお知らせが届きました。 実際のグループにLINE Notifyを招待しないといけなかったようです。 失礼しました。 招待し………(省略)………
ログインして全文を読む
  • 返信者:(DELETE1684735185)ECマスターズ田中
  • 2021/03/14 16:27
ECマスターズの田中です。 無事動作して何よりです。 > 現在は件名のみLINEされるようなのでLINEされる部分をカスタマイズしたいのですが可能で………(省略)………
ログインして全文を読む
  • 返信者:BB (質問者)
  • 2021/03/14 17:54
田中様、 カスタマイズできるとのことで、早速やってみました。うまくいきました。 もう少し希望通りにするには試行錯誤する必要があり時間がかかりそうなので 一………(省略)………
ログインして全文を読む
  • 返信者:BB (質問者)
  • 2021/03/15 16:54
田中様、 カスタマイズの件で、再度教えて頂けませんでしょうか。 LINEへのメッセージは単純な方がいいので、検討の結果、件名のみでOKということにな………(省略)………
ログインして全文を読む
  • 返信者:(DELETE1684735185)ECマスターズ田中
  • 2021/03/15 17:29
ECマスターズの田中です。 それでは、 valMsgs[i] = から ; までの内容を、 var tmpSbj = myMsgs[i].slice(………(省略)………
ログインして全文を読む
  • 返信者:BB (質問者)
  • 2021/03/15 17:43
早速にありがとうございます! [NextEngine] [ne**.next-engine.com][ショップ名様]の[NextEngine] 部分が残っ………(省略)………
ログインして全文を読む
  • 返信者:(DELETE1684735185)ECマスターズ田中
  • 2021/03/15 18:39
ECマスターズの田中です。 > 「在庫不足のお知らせ」と「在庫ゼロのお知らせ」の2パターンあります。 その場合は、 valMsgs[i] = /(………(省略)………
ログインして全文を読む
  • 返信者:BB (質問者)
  • 2021/03/15 20:45
田中さん、ありがとうございます。 うまくいきました。 [NextEngine]の部分は確かに、アクセストークンを作成される際タイトルとして設定しまし………(省略)………
ログインして全文を読む
  • 返信者:(DELETE1684735185)ECマスターズ田中
  • 2021/03/16 11:24
ECマスターズの田中です。 > [NextEngine]の部分は確かに、アクセストークンを作成される際タイトルとして設定しました。 ということであれ………(省略)………
ログインして全文を読む
  • 返信者:BB (質問者)
  • 2021/03/16 11:55
田中さん、気にかけていただきありがとうございます。 タイトルを工夫してみます。 実は在庫管理担当者から、品番のみではわかりづらく間違いのもととなりうるの………(省略)………
ログインして全文を読む
  • 返信者:(DELETE1684735185)ECマスターズ田中
  • 2021/03/16 14:16
ECマスターズの田中です。 メール本文の中から希望の内容だけを取り出す、 といった処理をGoogle Apps Script(JavaScript)内で………(省略)………
ログインして全文を読む
  • 返信者:BB (質問者)
  • 2021/03/16 21:12
田中さん、 詳しい情報ありがとうございます! 教えていただいた情報をもとに挑戦してみます。………(省略)………
ログインして全文を読む
  • 返信者:BB (質問者)
  • 2021/05/11 08:46
その節はありがとうございました。 少し前から通知が繰り返し来るようになりました。 どうやら既読にならないようです。 デバッグしてみましたところ、 ………(省略)………
ログインして全文を読む
  • 返信者:(DELETE1756463501)ECマスターズ伊藤
  • 2021/05/11 13:20
ECマスターズの伊藤です。 > なにか仕様が変わったんでしょうか。 > アドバイスいただけましたら幸いです。 > > 回答は特に急ぎません。 ………(省略)………
ログインして全文を読む
  • 返信者:(DELETE1684735185)ECマスターズ田中
  • 2021/05/12 11:06
ECマスターズの田中です。 失礼しました、 万が一、メールがスレッド化されている場合、 スレッド化された2通目以降のメールが 正常に取得できていない………(省略)………
ログインして全文を読む
  • 返信者:BB (質問者)
  • 2021/05/12 11:20
田中様、ありがとうございます。 差し替えて実行しましたが、下記のエラーが出ます。 11:15:30 お知らせ 実行開始 11:15:30 情報 s………(省略)………
ログインして全文を読む
  • 返信者:(DELETE1684735185)ECマスターズ田中
  • 2021/05/12 15:00
ECマスターズの田中です。 > var response = UrlFetchApp.fetch("https://notify-api.line.me/………(省略)………
ログインして全文を読む
  • 返信者:BB (質問者)
  • 2021/05/12 22:29
田中さん、いつもありがとうございます。 すいません、実行関数を"main"にしてなかったことが原因のようでした。 教えていただいたものに差し替えて、うま………(省略)………
ログインして全文を読む
(DELETE1684735187)ECマスターズ鈴木 管理者コメント 2021/03/11 19:27
ECマスターズの鈴木です。

> ネクストエンジンからくる在庫アラート(のみ)を、
> 在庫管理担当者のLINEへ送りたいのですが、方法をアドバイス頂けないでしょうか。

IFTTTを使用しない方法となりますが、
下記に参考の記事がございましたので、

【2020年版・iPhone向け】Gmailに届いた特定のラベルのメールをLINEに通知する方法|IFTTTではなくGASをつかいます。
https://philosophie-eisen.com/gmail-to-line

一度お試しいただけましたら幸いです。
ECマスターズ山岡 管理者コメント 2021/03/12 14:28
ECマスターズの山岡です。

var lineToken = "**********"; //LINE notify token
var get_interval = 1; //1分前からの新着メールを取得


function send_line(Me){
var payload = {'message' : Me};
var options ={
"method" : "post",
"payload" : payload,
"headers" : {"Authorization" : "Bearer "+ lineToken}
};
UrlFetchApp.fetch("https://notify-api.line.me/api/notify", options);
}


function fetchContactMail() {

//取得間隔
var now_time= Math.floor(new Date().getTime() / 1000) ;//現在時刻を変換
var time_term = now_time - (60 * get_interval); //秒

//検索条件指定(未読でラベル ネクストエンジン を持つもの)
var strTerms = ('is:unread label:ネクストエンジン');

//取得
var myThreads = GmailApp.search(strTerms);
var myMsgs = GmailApp.getMessagesForThreads(myThreads);
var valMsgs = [];
for(var i = 0; i < myMsgs.length;i++){
valMsgs[i] = " " + myMsgs[i].slice(-1)[0].getDate().getMonth() + "/"+ myMsgs[i].slice(-1)[0].getDate().getDate()
+ " " + myMsgs[i].slice(-1)[0].getDate().getHours() + ":" + myMsgs[i].slice(-1)[0].getDate().getMinutes()
+ "\n[from]" + myMsgs[i].slice(-1)[0].getFrom()
+ "\n\n[sbject]" + myMsgs[i].slice(-1)[0].getSubject();
// + "\n\n[Message]\n"+ myMsgs[i].slice(-1)[0].getPlainBody();
myMsgs[i][0].markRead(); //メッセージを既読にする
}


return valMsgs;
}

function main() {
new_Me = fetchContactMail()
if(new_Me.length > 0){
for(var i = new_Me.length-1; i >= 0; i--){
send_line(new_Me[i])
}
}
}
(DELETE1684735187)ECマスターズ鈴木 管理者コメント 2021/03/12 19:52
ECマスターズの鈴木です。

> ループイフダン部分は具体的にどのことを指すのでしょう?「ラベル」とは?

ループイフダンは、FXの売買システムとなりますので、
あくまで例として紹介されております。

ラベルとは、Gmailでの自動振り分け設定のフォルダと認識ください。

> 保存しようとしましたら構文エラーで保存できませんでした。

こちらは後述するLINEのアクセストークンがプログラムに入力されていないことが
原因だと考えられますので、一度下記のご対応をいただければ幸いです。

先述の参考記事でご説明している内容としては、
Gmailの「ループイフダン」という名前のラベル(フォルダ)
に振り分けられるメールに対してのみ、
LINEに通知を行う方法として紹介されております。

そのため、流れと致しましては、

1.LINEのアクセストークンの発行
在庫管理担当者の通知専用のグループを作成いただいて、
トークンを取得いただくことをおすすめいたします。

2.Gmailにてネクストエンジンのラベルを作成する。(既に作成されている場合は不要です。)
ラベルの作成方法については、下記の参考記事をご参照ください。

【Gmail活用術】Gmailで自動振り分けを行う方法
https://blastmail.jp/blog/mail/gmail-distribution

3,Google Apps Scriptにて通知するためのプログラムを作成する

1,で作成したトークンを、後述するコードの
var lineToken = "**********"; //LINE notify token
星マークの部分に貼り付けてください。

次に、2,の工程で作成したラベルをプログラムに入れ込んでいただく必要がございます。
https://ec-masters.gyazo.com/fd89ed7a0697a22883e0ae80afb022fe

下記に例として、ラベル名をネクストエンジンにした際のコードを
添付いたしましたので、ご参照ください。

ーーーーーーーーーーーーーーーーーーーーーーーーーーーー

var lineToken = "**********"; //LINE notify token
var get_interval = 1; //1分前からの新着メールを取得


function send_line(Me){
var payload = {'message' : Me};
var options ={
"method" : "post",
"payload" : payload,
"headers" : {"Authorization" : "Bearer "+ lineToken}
};
UrlFetchApp.fetch("https://notify-api.line.me/api/notify", options);
}


function fetchContactMail() {

//取得間隔
var now_time= Math.floor(new Date().getTime() / 1000) ;//現在時刻を変換
var time_term = now_time - (60 * get_interval); //秒

//検索条件指定(未読でラベル ネクストエンジン を持つもの)
var strTerms = ('is:unread label:ネクストエンジン');

//取得
var myThreads = GmailApp.search(strTerms);
var myMsgs = GmailApp.getMessagesForThreads(myThreads);
var valMsgs = [];
for(var i = 0; i < myMsgs.length;i++){
valMsgs[i] = " " + myMsgs[i].slice(-1)[0].getDate().getMonth() + "/"+ myMsgs[i].slice(-1)[0].getDate().getDate()
+ " " + myMsgs[i].slice(-1)[0].getDate().getHours() + ":" + myMsgs[i].slice(-1)[0].getDate().getMinutes()
+ "\n[from]" + myMsgs[i].slice(-1)[0].getFrom()
+ "\n\n[sbject]" + myMsgs[i].slice(-1)[0].getSubject();
// + "\n\n[Message]\n"+ myMsgs[i].slice(-1)[0].getPlainBody();
myMsgs[i][0].markRead(); //メッセージを既読にする
}


return valMsgs;
}

function main() {
new_Me = fetchContactMail()
if(new_Me.length > 0){
for(var i = new_Me.length-1; i >= 0; i--){
send_line(new_Me[i])
}
}
}

ーーーーーーーーーーーーーーーーーーーーーーーーーーーー