回答編集履歴
4
修正
answer
CHANGED
@@ -15,7 +15,7 @@
|
|
15
15
|
var replyText = "";
|
16
16
|
|
17
17
|
if(postMsg == "登録") {
|
18
|
-
replyText = "予定の登録はこちら\n" + "https://docs.google.com/forms/d/e/***/viewform?entry.***=
|
18
|
+
replyText = "予定の登録はこちら\n" + "https://docs.google.com/forms/d/e/***/viewform?entry.***="+userId;
|
19
19
|
//↑フォームIDとエントリーの番号を入力
|
20
20
|
} ...
|
21
21
|
```
|
3
追記
answer
CHANGED
@@ -1,5 +1,31 @@
|
|
1
1
|
[追記]
|
2
|
+
横から口出しのようになってしまいすみません。
|
2
3
|
|
4
|
+
①googleフォームにユーザIDという欄を作成する。
|
5
|
+
②「登録」に対してのリプライで、googleフォームのURLを返す際にentryでユーザIDを入力する。
|
6
|
+
※ユーザIDは、以下で取得可能。
|
7
|
+
|
8
|
+
|
9
|
+
```gas
|
10
|
+
function reply(data) {
|
11
|
+
var postMsg = data.message.text;
|
12
|
+
var replyToken = data.replyToken;
|
13
|
+
// ユーザID
|
14
|
+
var userId = data.source.userId
|
15
|
+
var replyText = "";
|
16
|
+
|
17
|
+
if(postMsg == "登録") {
|
18
|
+
replyText = "予定の登録はこちら\n" + "https://docs.google.com/forms/d/e/***/viewform?entry.***=userId";
|
19
|
+
//↑フォームIDとエントリーの番号を入力
|
20
|
+
} ...
|
21
|
+
```
|
22
|
+
|
23
|
+
|
24
|
+
---
|
25
|
+
|
26
|
+
|
27
|
+
[追記]
|
28
|
+
|
3
29
|
①follow時に、ユーザIDに適当な英数字を(認証コード)割り当て、メッセージで予め送っておき、ユーザIDと共にSSに保存しておく。
|
4
30
|
|
5
31
|
②GOOGLEフォーム側に認証コードを入力してもらう。
|
2
追記
answer
CHANGED
@@ -1,3 +1,29 @@
|
|
1
|
+
[追記]
|
2
|
+
|
3
|
+
①follow時に、ユーザIDに適当な英数字を(認証コード)割り当て、メッセージで予め送っておき、ユーザIDと共にSSに保存しておく。
|
4
|
+
|
5
|
+
②GOOGLEフォーム側に認証コードを入力してもらう。
|
6
|
+
メールアドレスの収集を有効にする。
|
7
|
+
※google workspaceメンバーは自動で入力されますが、無料GOOGLEeアカウントだと手入力なのでちょっと面倒かも。。。
|
8
|
+
|
9
|
+
※認証コード用のフォームと予定入力用は分けてもいいと思います。
|
10
|
+
=>初めての方用
|
11
|
+
メールアドレスと認証コードを取得。認証コードと紐付いているユーザIDとメールアドレスを紐付ける。
|
12
|
+
|
13
|
+
=>予定入力用
|
14
|
+
メールアドレスを入力してもらい、ユーザIDを検索する。
|
15
|
+
|
16
|
+
|
17
|
+
になりますかね。。。
|
18
|
+
|
19
|
+
|
20
|
+
もっと簡単にしたいとなると、GOOGLEフォームは色々と制限があり使いにくいのでVUEなどを使って自分でフォームを作っちゃた方が早くて高性能でかっこよく作れます。
|
21
|
+
学習コストがちょっとかかりますが。。。
|
22
|
+
|
23
|
+
検討ください!
|
24
|
+
|
25
|
+
---
|
26
|
+
|
1
27
|
トラブルなかったようでよかったです!
|
2
28
|
まず先にお詫びですが、GASではLINEのメッセージAPIを使用したことはありませんので、
|
3
29
|
最後までいけるか若干不安はありますが。。。
|
1
追記
answer
CHANGED
@@ -6,17 +6,67 @@
|
|
6
6
|
|
7
7
|
|
8
8
|
SS = スプレッドシート
|
9
|
-
|
9
|
+
|
10
10
|
①メッセージの送信
|
11
11
|
②フォロー時に、SSに保存されているユーザIDの保存
|
12
12
|
③アンフォロー時に、SSに保存されているユーザIDの削除
|
13
13
|
|
14
|
-
それぞれは理解できていますか?
|
14
|
+
これはそれぞれは理解できていますか?
|
15
|
-
|
15
|
+
できていればOKです。
|
16
16
|
|
17
17
|
> このようなプログラムを見よう見まねで作成したのですが、予定を表示させたときに、複数人の予定が纏めて表示されてしまいました。
|
18
18
|
そこで、BOTを追加した人ごとにスプレッドシートを作成して別々に内容を管理したいと考えたのですが行き詰ってしまいました。
|
19
19
|
|
20
20
|
|
21
21
|
ここが悩みということですよね?
|
22
|
+
|
23
|
+
④ユーザIDとGOOGLEフォームから投稿された内容を送る「誰か」を紐づける。
|
22
|
-
まず、GOOGLEフォームから投稿された内容が誰
|
24
|
+
まず、GOOGLEフォームから投稿された内容が「誰か」に送るためには、
|
25
|
+
その[誰]とLINEユーザIDを紐づけるさせる必要があります。
|
26
|
+
|
27
|
+
紐づけるにはfollow時に、ユーザIDに適当な英数字を割り当て(ユニークId)メッセージで予め送っておき、ユーザIDと共にSSに保存しておき、ユーザ側にはGOOGLEフォーム入力時にユニークIDを入力してもらう。
|
28
|
+
|
29
|
+
GOOGLEフォーム
|
30
|
+
例)メッセージパスワードを入力してください。 [A8ga3df]
|
31
|
+
|
32
|
+
⑤予定を返す
|
33
|
+
今後の予定と入力があった場合に予定を返すこととなりますが、
|
34
|
+
ここは簡単だと思います。
|
35
|
+
詳細なコードは割愛しますが、
|
36
|
+
1.全てのデータの取得
|
37
|
+
2.ユニークIdを持った行を見つける
|
38
|
+
3.2の中の日付が未来のものだけ返す
|
39
|
+
|
40
|
+
という3つの作業になります。
|
41
|
+
|
42
|
+
|
43
|
+
|
44
|
+
```gas
|
45
|
+
function reply(data) {
|
46
|
+
var postMsg = data.message.text;
|
47
|
+
var replyToken = data.replyToken;
|
48
|
+
var replyText = "";
|
49
|
+
|
50
|
+
if(postMsg == "登録") {
|
51
|
+
replyText = "予定の登録はこちら\n" + "https://docs.google.com/forms/d/XXXXXXXXXX/edit#responses";
|
52
|
+
} else if(postMsg == "今後の予定") {
|
53
|
+
var spreadsheet = SpreadsheetApp.openById("XXXXXXXXXX");
|
54
|
+
var sheet = spreadsheet.getActiveSheet();
|
55
|
+
|
56
|
+
//ここに記載
|
57
|
+
|
58
|
+
|
59
|
+
|
60
|
+
}
|
61
|
+
```
|
62
|
+
|
63
|
+
GASやJSは日付の比較や操作が面倒なのでライブラリを入れることをお勧めします。
|
64
|
+
[DAYJS](https://gas.excelspeedup.com/dayjs/)
|
65
|
+
|
66
|
+
|
67
|
+
|
68
|
+
言っている意味が難しいと感じるようであれば、
|
69
|
+
まずは焦らずfor文やif分、getValues,setValues、配列と二次元配列、連想配列を自由に使いこなせるように
|
70
|
+
なってから進めた方が最終的には早く完成すると思います。
|
71
|
+
|
72
|
+
頑張ってください!!応援してます!!
|