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

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

新規登録して質問してみよう
ただいま回答率
85.48%
Google Apps Script

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

Q&A

解決済

2回答

1757閲覧

GASによるチャットワークへの通知

mogumog

総合スコア16

Google Apps Script

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

0グッド

1クリップ

投稿2019/07/03 02:27

編集2019/07/03 02:28

度々失礼致します、実現させたいことは
①getMailのトリガーで1分ごとにGmailの内容を読み取り、スプレッドシートに記入する
②そのスプレッドシートに記入した内容をchatNotifyのトリガーで「スプレッドシートが変更された時に」通知の設定を行うことです。

現在、以下のコードで①までは問題なく実現できるのですが、スプレッドシートに書き出された物をチャットワークに通知がされません。
ご教授お願い致します。どうぞよろしくお願い致します。

javascript

1function chatNotify() { 2 var client = ChatWorkClient.factory({token: "77777777777777777777"}); 3 var objSpreadsheet = SpreadsheetApp.getActiveSpreadsheet(); 4 var objSheet = objSpreadsheet.getSheetByName("シート1"); 5 var number1 = objSheet.getRange('A1').getValue(); 6 client.sendMessage({ 7 room_id: 1111111111, 8 body:number1 + "に注文がありました" 9 10 }); 11} 12 13 14 15function getMail(){ 16 var objSpreadsheet = SpreadsheetApp.getActiveSpreadsheet(); 17 var objSheet = objSpreadsheet.getSheetByName("シート1"); 18 var sheet = SpreadsheetApp.setActiveSheet(objSheet); 19 20 21 var start = 0; 22 var max = 500; 23 var threads = GmailApp.search('label:重要 is:unread',start,max); 24 var row = sheet.getLastRow() + 1; 25 26 for(var n in threads){ 27 var thd = threads[n]; 28 var msgs = thd.getMessages(); 29 30 for(var m in msgs){ 31 var msg = msgs[m]; 32 var body = msg.getBody(); 33 var date = msg.getDate(); 34 sheet.appendRow([date]); 35} 36 thd.markRead(); 37 Utilities.sleep(1000); 38 } 39} 40 41 42

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

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

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

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

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

guest

回答2

0

ベストアンサー

getMail内でchatNotifyを呼び出せばいいだけなのでは?
わざわざ2つにわけているのは何か意図があってのことなのでしょうか?

javascript

1function chatNotify() { 2 var client = ChatWorkClient.factory({token: "77777777777777777777"}); 3 var objSpreadsheet = SpreadsheetApp.getActiveSpreadsheet(); 4 var objSheet = objSpreadsheet.getSheetByName("シート1"); 5 var number1 = objSheet.getRange('A1').getValue(); 6 client.sendMessage({ 7 room_id: 1111111111, 8 body:number1 + "に注文がありました" 9 }); 10} 11 12 13 14function getMail(){ 15 var objSpreadsheet = SpreadsheetApp.getActiveSpreadsheet(); 16 var objSheet = objSpreadsheet.getSheetByName("シート1"); 17 var sheet = SpreadsheetApp.setActiveSheet(objSheet); 18 19 20 var start = 0; 21 var max = 500; 22 var threads = GmailApp.search('label:重要 is:unread',start,max); 23 var row = sheet.getLastRow() + 1; 24 25 for(var n in threads){ 26 var thd = threads[n]; 27 var msgs = thd.getMessages(); 28 29 for(var m in msgs){ 30 var msg = msgs[m]; 31 var body = msg.getBody(); 32 var date = msg.getDate(); 33 sheet.appendRow([date]); 34 chatNotify(); // ここで呼び出し 35 } 36 thd.markRead(); 37 Utilities.sleep(1000); 38 } 39}

投稿2019/07/04 04:36

編集2019/07/04 04:38
macaron_xxx

総合スコア3191

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

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

mogumog

2019/07/04 05:02

ありがとうございます!早速試してみようと思います!
guest

0

うろ覚えなのですが回答ついてないので。
スクリプトの処理からトリガーが発動しなかったように思います。

今回のものだと時間がかかりそうなので、通知の方を時間主導トリガーにしてはどうでしょうか?

投稿2019/07/03 22:50

papinianus

総合スコア12705

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

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

mogumog

2019/07/04 00:07

ありがとうございます、一度時間主導型で試してみようと思います。
papinianus

2019/07/04 09:13

この回答はスリープしているコードで複雑なことをしたくない観点を前提にしています。 よく分からないのですがなぜA1固定なのでしょう。一度しか走らせなくて良いなら最後の閉じカッコ}の直前でchatNotifyを実行すべきですし、メールに応じてやるならA1固定は適切ではない。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問