質問編集履歴

2

javaではなく、GASというものだった

2021/04/16 10:00

投稿

hell
hell

スコア0

test CHANGED
File without changes
test CHANGED
File without changes

1

説明付与

2021/04/16 10:00

投稿

hell
hell

スコア0

test CHANGED
File without changes
test CHANGED
@@ -2,11 +2,19 @@
2
2
 
3
3
 
4
4
 
5
- ここに質問の内容を詳しく書いてください
5
+ プログラミング初心者です
6
6
 
7
- (例)PHP(CakePHP)●●なシステム作っています。
7
+ スプレッドシートの時間、日付をもとに、GoogleChatリマインド機能実装することを目的にしています。
8
8
 
9
+ スプレッドシートのツールから、スクリプトエディタを表示し、そこにコードを打ち込んでいます。
10
+
11
+ 実行すると、Cannot read property 'getRange' of nullのエラーが表示され、うまく作動しませんでした。
12
+
13
+
14
+
15
+ https://blog.members.co.jp/article/40069
16
+
9
- ■■な機能実装中以下のエラーメッセージが発生しました。
17
+ このサイト参考にしました。
10
18
 
11
19
 
12
20
 
@@ -16,7 +24,9 @@
16
24
 
17
25
  ```
18
26
 
27
+ TypeError: Cannot read property 'getRange' of null
28
+
19
- エラーメッセージ
29
+ remind @ remind.gs:21
20
30
 
21
31
  ```
22
32
 
@@ -28,13 +38,151 @@
28
38
 
29
39
  ```ここに言語名を入力
30
40
 
41
+ function remind() {
42
+
43
+ // 現在日時を取得
44
+
45
+ var date = new Date();
46
+
47
+ Logger.log(date);
48
+
49
+ // 曜日
50
+
51
+ var day= date.getDay();
52
+
53
+ Logger.log(day);
54
+
55
+ // 時間
56
+
57
+ var hour = date.getHours();
58
+
59
+ // 分
60
+
61
+ var minutes = date.getMinutes();
62
+
63
+
64
+
65
+ // スプレの情報を取得
66
+
67
+ var sheet = SpreadsheetApp.getActive().getSheetByName('remind');
68
+
69
+ //var sheet = SpreadsheetApp.openById('https://drive.google.com/drive/my-drive').getSheetByName('remind');
70
+
71
+ //var sheet = spread.getSheetByName('remind');
72
+
73
+
74
+
75
+ var rowLast = sheet.getLastRow();
76
+
77
+ //var rowLast = 8;
78
+
79
+
80
+
81
+ //const FValues = sheet.getRange('4').getValues();  //F列の値を全て取得
82
+
83
+ //const LastRow = FValues.filter(String).length;  //空白の要素を除いた長さを取得
84
+
85
+ //Logger.log(LastRow);
86
+
87
+
88
+
89
+
90
+
91
+
92
+
93
+
94
+
95
+
96
+
97
+
98
+
99
+ var data_remind = sheet.getRange(2, 1, rowLast, 4).getValues();
100
+
101
+
102
+
103
+ // 登録されているメッセージの回数繰り返す
104
+
105
+ for(var i = 0; i < data_remind.length; i++){
106
+
107
+ // スプレの時間指定とメッセージを取得
108
+
109
+ var remind_day = data_remind[i][0];
110
+
111
+ var remind_hour = data_remind[i][1];
112
+
113
+ var remind_minutes = data_remind[i][2];
114
+
115
+ var message = data_remind[i][3];
116
+
117
+
118
+
119
+ // 一分ごとのトリガーを設定し、合った時にメッセージをPOSTする
120
+
121
+ if(day == remind_day && hour == remind_hour && minutes == remind_minutes){ //時間が合っているか
122
+
123
+
124
+
125
+ var url = 'https://chat.googleapis.com/v1/spaces/AAAAxe_B6iU/messages?key=AIzaSyDdI0hCZtE6vySjMm-WEfRq3CPzqKqqsHI&token=uFDTnSz7vzmKnp53YPqaYTKFC1YdFlsqlLwwRA8QsSc%3D';
126
+
127
+
128
+
129
+ var botMessage = { 'text': message }
130
+
131
+
132
+
133
+ var options = {
134
+
135
+ 'method': 'POST',
136
+
137
+ 'headers': {
138
+
139
+ 'Content-Type': 'application/json; charset=UTF-8'
140
+
141
+ },
142
+
143
+ 'payload': JSON.stringify(botMessage)
144
+
145
+ };
146
+
147
+
148
+
149
+ var result = UrlFetchApp.fetch(url, options);
150
+
151
+ Logger.log(result);
152
+
153
+ Logger.log('applicable');
154
+
155
+
156
+
31
- ソースコード
157
+ }else{
158
+
159
+ Logger.log('not applicable');
160
+
161
+ }
162
+
163
+ }
164
+
165
+ }
32
166
 
33
167
  ```
34
168
 
35
169
 
36
170
 
171
+ var sheet = SpreadsheetApp.getActive().getSheetByName('remind');
172
+
173
+
174
+
175
+ var sheet = SpreadsheetApp.openById('https://drive.google.com/drive/my-drive').getSheetByName('remind');
176
+
177
+ に変える
178
+
179
+ var rowLast = sheet.getLastRow();
180
+
181
+
182
+
37
- ### 試したこと
183
+ var rowLast = 8;
184
+
185
+ に変える
38
186
 
39
187
 
40
188