質問するログイン新規登録

回答編集履歴

4

2021/08/24 07:36

投稿

退会済みユーザー
answer CHANGED
@@ -1,6 +1,6 @@
1
1
  下記のコード例では、datetime picker表示用に新たにpushDatePickerという関数を作っています。
2
2
 
3
- 日付を質問する時は、この関数に、表示させたいメッセージと一緒に取得したリプライトークンを渡すようにします。
3
+ 日付を質問する時は、この関数に、表示させたいメッセージと一緒にリプライトークンを渡すようにします。
4
4
 
5
5
  ```js
6
6
  //開始日時の質問

3

修正

2021/08/24 07:36

投稿

退会済みユーザー
answer CHANGED
@@ -1,17 +1,10 @@
1
- datetime pickerを表示させる場合は、リプライではなくプッシュメッセージとして送信する必要があります。
2
- プッシュメッセージ送信時にはユーザーIDが必要となるため
3
- doPostで受け取ったイベントオブジェクトから、送信先のユーザーIDを取得しておきます。
4
- ```js
5
- var userId = event.source.userId;
6
- ```
7
-
8
1
  下記のコード例では、datetime picker表示用に新たにpushDatePickerという関数を作っています。
9
2
 
10
- 日付を質問する時は、この関数に、メッセージと一緒に取得したザーIDを渡すようにします。
3
+ 日付を質問する時は、この関数に、表示させたいメッセージと一緒に取得したリプライトクンを渡すようにします。
11
4
 
12
5
  ```js
13
6
  //開始日時の質問
14
- pushDatePicker("開始日を入力してください", userId);
7
+ pushDatePicker("開始日を入力してください", replyToken);
15
8
  ```
16
9
 
17
10
  ユーザーがdatetime pickerを利用して日付を入力したときにGASに返ってくるデータは、リプライデータと構造が異なるため、冒頭で条件分岐しています。
@@ -53,7 +46,6 @@
53
46
  function doPost(e) {
54
47
  var event = JSON.parse(e.postData.contents).events[0]
55
48
  var replyToken = event.replyToken;
56
- var userId = event.source.userId;
57
49
  var eventtype = event.type;
58
50
  if (typeof replyToken === 'undefined') {
59
51
  return;
@@ -72,7 +64,7 @@
72
64
  if (messageText === "予定の追加") {
73
65
  cache.put("type", 1);
74
66
  //開始日時の質問
75
- pushDatePicker("開始日を入力してください", userId);
67
+ pushDatePicker("開始日を入力してください", replyToken);
76
68
  //今日、7日間の予定の取得
77
69
  } else if (messageText.match("今日の予定")) {
78
70
  reply(replyToken, getEvents());
@@ -102,7 +94,9 @@
102
94
  //終了日時の質問
103
95
  var year = new Date().getFullYear();
104
96
  var startDate = new Date(year, cache.get("start_month") - 1, cache.get("start_day"));
105
- pushDatePicker("開始日は\n"+ EventFormat(startDate) + "\nですね。\n\n次に予定の終了日時をお知らせください。", userId);
97
+ //pushDatePicker("開始日は\n"+ EventFormat(startDate) + "\nですね。\n\n次に予定の終了日時をお知らせください。", userId);
98
+ pushDatePicker("次に終了日を入力してください。", replyToken);
99
+
106
100
  break;
107
101
  } else {
108
102
  reply(replyToken, "予定追加処理中です。\n「キャンセル」\nで追加作業をキャンセルします。");
@@ -154,8 +148,8 @@
154
148
  }
155
149
 
156
150
 
157
- function pushDatePicker(message, userId) {
151
+ function pushDatePicker(message, replyToken) {
158
-
152
+ var url = "https://api.line.me/v2/bot/message/reply";
159
153
  UrlFetchApp.fetch(url, {
160
154
  "headers": {
161
155
  "Content-Type": "application/json; charset=UTF-8",
@@ -163,7 +157,7 @@
163
157
  },
164
158
  "method": "post",
165
159
  "payload": JSON.stringify({
166
- "to": userId,
160
+ "replyToken": replyToken,
167
161
  "messages": [
168
162
  {
169
163
  "type": "template",
@@ -184,7 +178,7 @@
184
178
  "actions": [
185
179
  {
186
180
  "type": "datetimepicker",
187
- "label": "日時選択してください。",
181
+ "label": "ここタップ",
188
182
  "data": "action=settime",
189
183
  "mode": "datetime",
190
184
  "initial": Utilities.formatDate(new Date(), "Asia/Tokyo", "yyyy-MM-dd'T'HH:mm"),

2

2021/08/24 07:33

投稿

退会済みユーザー
answer CHANGED
@@ -36,8 +36,8 @@
36
36
  ```
37
37
 
38
38
  pushDatePicker関数で記事のコードから変えたのは、
39
- ・初期値を現在日時とするようにした。
40
- メッセージ変数にした (`"initial": Utilities.formatDate(new Date(), "Asia/Tokyo", "yyyy-MM-dd'T'HH:mm"),`)
39
+ 初期値現在日時とするようにした (`"initial": Utilities.formatDate(new Date(), "Asia/Tokyo", "yyyy-MM-dd'T'HH:mm"),`)
40
+ ・メッセージを変数にした
41
41
  ・最大・最小は不要なのでコメントアウト
42
42
  等です。
43
43
 

1

2021/08/24 06:48

投稿

退会済みユーザー
answer CHANGED
@@ -16,8 +16,7 @@
16
16
 
17
17
  ユーザーがdatetime pickerを利用して日付を入力したときにGASに返ってくるデータは、リプライデータと構造が異なるため、冒頭で条件分岐しています。
18
18
  datetime picker経由で入力されたデータか否かは、イベントタイプがpostbackかどうかで判断できます。
19
- (ここでは、
20
- イベントタイプが"postback"であればdatetime picker経由で入力されたデータ
19
+ (ここでは、イベントタイプが"postback"であれば datetime picker経由で入力されたデータ
21
20
  そうでなければ、通常のリプライデータ)
22
21
 
23
22
  ```js
@@ -38,8 +37,8 @@
38
37
 
39
38
  pushDatePicker関数で記事のコードから変えたのは、
40
39
  ・初期値を現在日時とするようにした。
41
- ・メッセージを変数にした
40
+ ・メッセージを変数にした (`"initial": Utilities.formatDate(new Date(), "Asia/Tokyo", "yyyy-MM-dd'T'HH:mm"),`)
42
- ・最大・最小は不要なのでコメントアウトしている
41
+ ・最大・最小は不要なのでコメントアウト
43
42
  等です。
44
43
 
45
44
  ---
@@ -51,7 +50,7 @@
51
50
 
52
51
 
53
52
  //受け取ったメッセージの処理
54
- function GetMessage (e) {
53
+ function doPost(e) {
55
54
  var event = JSON.parse(e.postData.contents).events[0]
56
55
  var replyToken = event.replyToken;
57
56
  var userId = event.source.userId;
@@ -204,7 +203,7 @@
204
203
 
205
204
  }
206
205
 
207
- function createData(cache) {
206
+ createData(cache)
208
- 略 (現状から変えなくてよいはず)
207
+ --->略 (現状から変えなくてよいはず)
209
- }
208
+
210
209
  ```