質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.50%
LINE Messaging API

LINE Messaging APIは、メッセージの送信・返信ができるAPIです。Web APIを経由しアプリケーションサーバとLINEのAPIでやり取りが可能。複数のメッセージタイプや分かりやすいAPIリファレンスを持ち、グループチャットにも対応しています。

Gmail

GmailとはGoogleによって提供されているウェブメールのサービスのことです。

Google Apps Script

Google Apps ScriptはGoogleの製品と第三者のサービスでタスクを自動化するためのJavaScriptのクラウドのスクリプト言語です。

Q&A

解決済

2回答

1061閲覧

GmailをLINEへ転送する際、トリガーを「15分おき」にすると届かなくなってしまう

dshiraiwa

総合スコア9

LINE Messaging API

LINE Messaging APIは、メッセージの送信・返信ができるAPIです。Web APIを経由しアプリケーションサーバとLINEのAPIでやり取りが可能。複数のメッセージタイプや分かりやすいAPIリファレンスを持ち、グループチャットにも対応しています。

Gmail

GmailとはGoogleによって提供されているウェブメールのサービスのことです。

Google Apps Script

Google Apps ScriptはGoogleの製品と第三者のサービスでタスクを自動化するためのJavaScriptのクラウドのスクリプト言語です。

0グッド

0クリップ

投稿2022/04/26 03:03

いろいろ試してみたのですが、上手くいかなかったため、よろしければご指導いただきたく書き込みさせていただきました。

**■GmailをLINEに転送するGASを作成
**
Gmailで特定のメールにラベルをつけるようにフィルタを設定。
そのラベルに受信したメールをLINEnotify を使用してLINEグループに転送するスクリプトを以下のように組んでみました。
※参考:https://beethoven.co.jp/column/20211201/
(同じように複数のラベルを設定してそれぞれ転送されるように設定)

**■1日の限界数を超えてしまう
**
その際のトリガー設定について「時間主導型」「分ベースのタイマー」「1分おき」と設定すると問題なくLINEへ転送されるのですが、1分ごとにトリガーを動かすことになってしまい、1日あたりの限界数(?)を超えてしまい、途中で止まってしまう事象が発生しました。

**■15分おきに伸ばすと転送されない
**
そこで頻度を少なくしようと「1分」→「15分おき」としたのですが…
今度はラベルに新着メールが届いて、15分おきにトリガーが実行されるのですが、メールが転送されないという状況になってしまいました。

つきましては、トリガーのタイマーの時間を「15分おき(あるいはそれ以上)」にしても、メールが転送されるような方法がありましたら、ご指導いただきたく、いつもお世話になっており、恐縮なのですが…よろしければアドバイスのほどお願いいたします。

GAS

1var lineToken = "○○○○○○○○○○○○○○○○○○○○"; //LINE notify token 2var words = ""; 3var f_body = 1; 4var interval = 1; 5 6function send_line(Me){ 7 var payload = {'message' : Me}; 8 var options ={ 9 "method" : "post", 10 "payload" : payload, 11 "headers" : {"Authorization" : "Bearer "+ lineToken} 12 }; 13 UrlFetchApp.fetch("https://notify-api.line.me/api/notify", options); 14} 15 16 17function fetchContactMail() { 18 //取得間隔 19 var now_time= Math.floor(new Date().getTime() / 1000) ;//現在時刻を変換 20 var time_term = now_time - ((60 * interval) + 3); //秒にして+3秒しておく 21 22 //検索条件指定 23 var strTerms = '(label:○○○○(ラベル名) subject:{' + words + '} is:unread after:'+ time_term + ')'; 24 25 //取得 26 var myThreads = GmailApp.search(strTerms); 27 var myMsgs = GmailApp.getMessagesForThreads(myThreads); 28 var valMsgs = []; 29 for(var i = 0; i < myMsgs.length;i++){ 30 valMsgs[i] = " " 31 + ( myMsgs[i].slice(-1)[0].getDate().getMonth() + 1) 32 + "/" 33 + myMsgs[i].slice(-1)[0].getDate().getDate() 34 + " " + myMsgs[i].slice(-1)[0].getDate().getHours() 35 + ":" + myMsgs[i].slice(-1)[0].getDate().getMinutes() 36 37 + "\n[from]" + myMsgs[i].slice(-1)[0].getFrom() 38 + "\n" + myMsgs[i].slice(-1)[0].getSubject() 39 40 if(f_body == 1){ 41 valMsgs[i] = valMsgs[i] + "\n\n[Message]\n"+ myMsgs[i].slice(-1)[0].getPlainBody(); 42 } 43 } 44 45 return valMsgs; 46} 47 48 49function main() { 50 new_Me = fetchContactMail() 51 if(new_Me.length > 0){ 52 for(var i = new_Me.length-1; i >= 0; i--){ 53 send_line(new_Me[i]) 54 } 55 } 56}

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答2

0

ベストアンサー

質問のコードの

var interval = 1;
//取得間隔
var now_time= Math.floor(new Date().getTime() / 1000) ;
//現在時刻を変換
var time_term = now_time - ((60 * interval) + 3); //秒にして+3秒しておく
var strTerms = '(label:○○○○(ラベル名) subject:{' + words + '} is:unread after:'+ time_term + ')';

部分で、メールの検索条件を設定しています。

time_term 秒前から現在までのメールを検索しているようですが、time_term は、いくつになるでしょうか。

質問のコードでは、( 60 * 1 ) + 3 秒前からのメールを検索しますので、実行間隔を広げるので有れば、この辺りを調整する必要があります。

投稿2022/04/26 03:34

CHERRY

総合スコア25171

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

dshiraiwa

2022/04/26 05:25

的確なコメントありがとうございますっ! > time_term 秒前から現在までのメールを検索しているようですが、time_term は、いくつになるでしょうか。 ここが、遡って新着メールを確認する時間のレンジ(範囲)なのですね! なるほど!! > 質問のコードでは、( 60 * 1 ) + 3 秒前からのメールを検索しますので、実行間隔を広げるので有れば、この辺りを調整する必要があります。 例えば、( 60 * 16 ) + 3 秒前とすれば、1分多めに見て16分+3秒の範囲で遡って実行間隔を広げてくれるので、トリガーの時間を15分した時に引っ掛かってくれる可能性があるということですね!! ちょっと試してみようと思います!
CHERRY

2022/04/26 08:55

補足すると interval = 1; なので、1 分間隔ですね。
dshiraiwa

2022/04/27 05:01

こんにちは! 補足コメントまで、ありがとうございますっ! 先ほど、実験してみたところ… var time_term = now_time - ((60 * 16) + 3); として、15分おきのトリガーに設定したところ、13分後にトリガーが実行されました! これを応用すれば、トリガーの設定間隔に基づいた time_term設定をすることで応用もできそうです!! お忙しいこととお察しいたしますが、 そんな中、ご教授いただきまして本当にありがとうございました! (私の試行錯誤の時間がかなり削減できました!) 本当にありがとうございました! 解決しましたので 心から感謝の気持ちを込めまして、こちらをベストアンサーとさせていただきます!
guest

0

1日の限界量を越えてしまってから15分おきに変更してもその日は転送されない、というはなしなんでは

投稿2022/04/26 03:21

y_waiwai

総合スコア87719

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

dshiraiwa

2022/04/26 05:20

コメントありがとうございます! > 1日の限界量を越えてしまってから15分おきに変更してもその日は転送されない いえ、そうではないようで(なぜなら1日置いてやってみているから)、そのため時間がかかってしまってなかなか問題が解決できず苦心しております…。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.50%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問