質問編集履歴

2 タイトル変更

n_yoko

n_yoko score 26

2019/08/05 09:59  投稿

# やりたいこと
GAS(Google Apps Script)で、Hangout Chat用のbotを個人用に作っています。
LINEの「リマイン君」の簡易版のような Reminder botを作り、タスク管理をするつもりです。
* ユーザーからの入力は2回(予定の入力、予定通知日の指定)、
* botからの反応は3回です(予定の登録完了、予定と通知日の登録完了、予定のお知らせ)。
* タスク管理を行うにあたり、ユーザーとボット側で、それぞれ下記の処理を行います。
**Reminder Botの動作フロー**
1. ユーザ)予定を入力する
   //「母親に連絡」
2. ボット)予定の登録、通知日の確認を行う
//『××ですね。いつ知らせますか?』
3. ユーザ)予定を通知して欲しい日を入力する
//「明日」、「〇月△△日」
4. ボット)通知日の登録、確認メッセージを出す
  //『〇月△△日に知らせます』
5. ボット)通知日を迎えたら、通知メッセージを出す
//『××の時間です!』
# 問題点
**できたこと**
1. ユーザが予定を入力して(例:母親に電話する)、
2. botが応答する(「母親に電話する」ですね。いつ知らせますか?)、
3. ユーザが予定通知を入力(例:8月10日)までを実装しましたが、
その先の(4)確認メッセージをbotに吐かせるところで、詰まっています。
**困っていること**
* ユーザが予定を入力すると(例:母親に電話する)、その内容がcreated_plan変数にされます。
* created_plan変数に値が入ると(created_plan変数の初期値は"")、通知日を登録する処理に
分岐するようif文の条件式(!created_plan)を書きましたが、処理が分岐してくれません。
* created_plan変数の初期値を適当に入力して("test"等)、値が入った状態であれば、分岐してくれます。
```js
var created_plan = "";
function onMessage(event) {
if(!created_plan){
// (1)ユーザの予定を登録
created_plan = event.message.text; // 1.予定を登録
return { "text": created_plan + "ですね。いつ知らせますか?"}; // 2. 通知日の確認
} else {
// (2)予定の通知日を登録
var notification_date = event.message.text; // 3~4: 通知日を登録
return { "text": notification_date + "に知らせます。"}; // 4.確認メッセージを出す
};
}
```
# 相談内容
以上の動きから、ボットが応答する(プログラムがreturnを返す)ごとに、変数created_planの中身がリセットされるため、ユーザーの入力値を保持できないことが分岐できない理由だと思います。
ユーザーの1回目の入力(=ユーザーの予定)を変数created_planに保持したまま、ユーザーの2回目の入力(=予定の通知日)を、ボットが処理する方法を模索しています。ご教示ください。
  • JavaScript

    24341 questions

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

  • Google Apps Script

    1746 questions

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

  • Hangouts

    11 questions

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

1

n_yoko

n_yoko score 26

2019/08/03 19:12  投稿

# やりたいこと
GAS(Google Apps Script)で、Hangout Chat用のbotを個人用に作っています。
LINEの「リマイン君」の簡易版のような Reminder botを作り、タスク管理をするつもりです。
* ユーザーからの入力は2回(予定の入力、予定通知日の指定)、
* botからの反応は3回です(予定の登録完了、予定と通知日の登録完了、予定のお知らせ)。
* タスク管理を行うにあたり、ユーザーとボット側で、それぞれ下記の処理を行います。
**Reminder Botの動作フロー**
1. ユーザ)予定を入力する
   //「母親に連絡」
2. ボット)予定の登録、通知日の確認を行う
//『××ですね。いつ知らせますか?』
3. ユーザ)予定を通知して欲しい日を入力する
//「明日」、「〇月△△日」
4. ボット)通知日の登録、確認メッセージを出す
  //『〇月△△日に知らせます』
5. ボット)通知日を迎えたら、通知メッセージを出す
//『××の時間です!』
# 問題点
**できたこと**
1. ユーザが予定を入力して(例:母親に電話する)、
2. botが応答する(「母親に電話する」ですね。いつ知らせますか?)、
3. ユーザが予定通知を入力(例:8月10日)までを実装しましたが、
その先の(4)確認メッセージをbotに吐かせるところで、詰まっています。
**困っていること**
* ユーザが予定を入力すると(例:母親に電話する)、その内容がcreated_plan変数にされます。
* created_plan変数に値が入ると(created_plan変数の初期値は"")、通知日を登録する処理に
分岐するようif文の条件式(!created_plan)を書きましたが、処理が分岐してくれません。
* created_plan変数の初期値を適当に入力して("test"等)、値が入った状態であれば、分岐してくれます。
```js
var created_plan = "";
function onMessage(event) {
if(!created_plan){
// (1)ユーザの予定を登録
created_plan = event.message.text; // 1.予定を登録
return { "text": created_plan + "ですね。いつ知らせますか?"}; // 2. 通知日の確認
} else {
// (2)予定の通知日を登録
var notification_date = event.message.text; // 3~4: 通知日を登録
return { "text": notification_date + "に知らせます。"}; // 4.確認メッセージを出す
};
}
```
# 相談内容
以上の動きから、ボットが応答する(プログラムがreturnを返す)ごとに、変数created_planの中身がリセットされるため、ユーザーの入力値を保持できないことが分岐できない理由だと思います。
ユーザーの1回目の入力(=ユーザーの予定)を変数created_planに保持したまま、ユーザーの2回目の入力(=予定の通知日)を、ボットが処理する方法を模索しています。ご教示ください。
  • JavaScript

    24341 questions

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

  • Google Apps Script

    1746 questions

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

  • Hangouts

    11 questions

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

思考するエンジニアのためのQ&Aサイト「teratail」について詳しく知る