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

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

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

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

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

Hangouts

Googleが提供するサービス。モバイル向けにもAndroidとiOSのソフトウェアが提供されています。 グループでのチャット、インターネット電話、ビデオ電話などが利用可能です。 Googleドライブとも連携しており、遠方との共同作業が可能になっています。

Q&A

解決済

1回答

416閲覧

[Hangout Bot] botで複数回メッセージを受け取る方法を知りたい

n_yoko

総合スコア32

Google Apps Script

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

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

Hangouts

Googleが提供するサービス。モバイル向けにもAndroidとiOSのソフトウェアが提供されています。 グループでのチャット、インターネット電話、ビデオ電話などが利用可能です。 Googleドライブとも連携しており、遠方との共同作業が可能になっています。

0グッド

0クリップ

投稿2019/08/02 08:23

編集2019/08/05 00:59

やりたいこと

GAS(Google Apps Script)で、Hangout Chat用のbotを個人用に作っています。
LINEの「リマイン君」の簡易版のような Reminder botを作り、タスク管理をするつもりです。

  • ユーザーからの入力は2回(予定の入力、予定通知日の指定)、
  • botからの反応は3回です(予定の登録完了、予定と通知日の登録完了、予定のお知らせ)。
  • タスク管理を行うにあたり、ユーザーとボット側で、それぞれ下記の処理を行います。

Reminder Botの動作フロー

  1. ユーザ)予定を入力する

   //「母親に連絡」

  1. ボット)予定の登録、通知日の確認を行う
    //『××ですね。いつ知らせますか?』

  2. ユーザ)予定を通知して欲しい日を入力する
    //「明日」、「〇月△△日」

  3. ボット)通知日の登録、確認メッセージを出す

  //『〇月△△日に知らせます』

  1. ボット)通知日を迎えたら、通知メッセージを出す
    //『××の時間です!』

問題点

できたこと

  1. ユーザが予定を入力して(例:母親に電話する)、
  2. botが応答する(「母親に電話する」ですね。いつ知らせますか?)、
  3. ユーザが予定通知を入力(例:8月10日)までを実装しましたが、

その先の(4)確認メッセージをbotに吐かせるところで、詰まっています。

困っていること

  • ユーザが予定を入力すると(例:母親に電話する)、その内容がcreated_plan変数にされます。
  • created_plan変数に値が入ると(created_plan変数の初期値は"")、通知日を登録する処理に
    分岐するようif文の条件式(!created_plan)を書きましたが、処理が分岐してくれません。
  • created_plan変数の初期値を適当に入力して("test"等)、値が入った状態であれば、分岐してくれます。

js

1var created_plan = ""; 2 3function onMessage(event) { 4 if(!created_plan){ 5 // (1)ユーザの予定を登録 6 created_plan = event.message.text; // 1.予定を登録 7 return { "text": created_plan + "ですね。いつ知らせますか?"}; // 2. 通知日の確認 8 } else { 9 // (2)予定の通知日を登録 10 var notification_date = event.message.text; // 3~4: 通知日を登録 11 return { "text": notification_date + "に知らせます。"}; // 4.確認メッセージを出す 12 }; 13}

相談内容

以上の動きから、ボットが応答する(プログラムがreturnを返す)ごとに、変数created_planの中身がリセットされるため、ユーザーの入力値を保持できないことが分岐できない理由だと思います。

ユーザーの1回目の入力(=ユーザーの予定)を変数created_planに保持したまま、ユーザーの2回目の入力(=予定の通知日)を、ボットが処理する方法を模索しています。ご教示ください。

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

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

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

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

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

guest

回答1

0

ベストアンサー

スクリプト上に保存することはできないので、スプレッドシートとかドキュメントとかデータベースとかに書いてください

投稿2019/08/04 22:11

papinianus

総合スコア12705

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

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

n_yoko

2019/08/06 01:30 編集

ご回答ありがとうございます。 script editor画面の「ファイル」>「プロジェクトのプロパティ」>「スクリプトのプロパティ」からプロパティを追加したら、過去の値を保持できるようになりました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.50%

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

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

質問する

関連した質問