回答編集履歴

5

他アカウントからアクセスすると権限エラーになっていたのを修正

2021/09/30 11:59

投稿

退会済みユーザー
test CHANGED
@@ -48,12 +48,18 @@
48
48
 
49
49
 
50
50
 
51
- 下記が全体プログラムになります。
51
+ 下記が全体プログラムになります。デプロイ時は、「アクセスできるユーザー」を「全員」に設定してください。
52
52
 
53
53
  code.gs
54
54
 
55
55
  ```js
56
56
 
57
+ // getActive()を使うと権限エラーとなるため、openById又はopenByUrlを使うこと。
58
+
59
+ var sheet = SpreadsheetApp.openById("~~").getSheetByName("シート1");
60
+
61
+
62
+
57
63
  function doGet(){
58
64
 
59
65
  var html = HtmlService.createHtmlOutputFromFile("index");
@@ -68,9 +74,7 @@
68
74
 
69
75
  function getData(){
70
76
 
71
- var sh = SpreadsheetApp.getActiveSheet();
72
-
73
- return sh.getDataRange().getValues()
77
+ return sheet.getDataRange().getValues()
74
78
 
75
79
  }
76
80
 
@@ -80,7 +84,7 @@
80
84
 
81
85
  var user = Session.getActiveUser();
82
86
 
83
- SpreadsheetApp.getActiveSheet().appendRow([user,text]);
87
+ sheet.appendRow([user,text]);
84
88
 
85
89
  }
86
90
 
@@ -176,8 +180,6 @@
176
180
 
177
181
  for(var i = lastrow; i < values.length; i++){
178
182
 
179
- var record = i + 1;
180
-
181
183
  var row = table.insertRow(-1);
182
184
 
183
185
  row.insertCell(0).innerHTML = '<td><font bgcolor=blue color="#000000">'+values[i][0]+'</td>';
@@ -222,15 +224,21 @@
222
224
 
223
225
 
224
226
 
225
- ・load()で非同期にコード.gsのgetData関数を呼び出
227
+ ・load 関数内、withSuccessHandlerを使って非同期にコード.gsのgetData関数を呼び出し、
226
-
228
+
227
- getData関数から取得したデータを、appendTableRows に渡し、tableのDOMを更新(行追加)
229
+ getData関数から取得したチャットデータを、appendTableRows に渡す。
230
+
231
+ ・appendTableRows 内で、tableのDOMを更新してテーブルの行を追加する。
228
232
 
229
233
  ```js
230
234
 
235
+ function load(){
236
+
231
- google.script.run
237
+ google.script.run
232
-
238
+
233
- .withSuccessHandler(appendTableRows).getData();
239
+ .withSuccessHandler(appendTableRows).getData();
240
+
241
+ }
234
242
 
235
243
  ```
236
244
 
@@ -250,8 +258,6 @@
250
258
 
251
259
  for(var i = lastrow; i < values.length; i++){
252
260
 
253
- var record = i + 1;
254
-
255
261
  var row = table.insertRow(-1);
256
262
 
257
263
  row.insertCell(0).innerHTML = '<td><font bgcolor=blue color="#000000">'+values[i][0]+'</td>';

4

2021/09/30 11:59

投稿

退会済みユーザー
test CHANGED
@@ -216,8 +216,6 @@
216
216
 
217
217
  ---
218
218
 
219
- まず、このスクリプトでは、createTemplateFromFileではなく、createHtmlOutputFromFile を使用しています。
220
-
221
219
 
222
220
 
223
221
  チャットデータの更新は、下記のようにして行っています。
@@ -228,10 +226,18 @@
228
226
 
229
227
  ・getData関数から取得したデータを、appendTableRows に渡し、tableのDOMを更新(行追加)
230
228
 
231
-
232
-
233
229
  ```js
234
230
 
231
+ google.script.run
232
+
233
+ .withSuccessHandler(appendTableRows).getData();
234
+
235
+ ```
236
+
237
+
238
+
239
+ ```js
240
+
235
241
  function appendTableRows(values){
236
242
 
237
243
  if(values == null || values[0]=='') return;

3

2021/09/25 13:37

投稿

退会済みユーザー
test CHANGED
@@ -278,7 +278,7 @@
278
278
 
279
279
 
280
280
 
281
- 上記は素案として作っただけで、まだまだブラッシュアップの余地はたくさんあります。
281
+ 上記は素案として作っただけで、まだまだブラッシュアップの余地はたくさんあります。
282
282
 
283
283
 
284
284
 

2

2021/09/25 13:32

投稿

退会済みユーザー
test CHANGED
@@ -36,6 +36,8 @@
36
36
 
37
37
  (方法として、内部フレームにチャットデータを閉じ込めてフレーム部分を部分更新するとかでしょうか・・・)
38
38
 
39
+ (※なお、今回の目的のためにcreateFromHtmlTemplateFileが全く使えないというわけではありません。ページの静的な組み立て(初期データの表示)にも使える余地はあります)
40
+
39
41
 
40
42
 
41
43
  ---
@@ -276,4 +278,8 @@
276
278
 
277
279
 
278
280
 
281
+ 上記は素案として作っただけで、まだまあだブラッシュアップの余地はたくさんあります。
282
+
283
+
284
+
279
285
  20行固定表示以外にも、最初のチャットデータ表示をもっと早くする方法を考えたり、チャットデータの転送量を減らす方法を考えたり(上記スクリプトだとチャットデータを全部送っている)、Vueで作り直したりするのも面白いと思います。

1

2021/09/25 13:32

投稿

退会済みユーザー
test CHANGED
@@ -276,4 +276,4 @@
276
276
 
277
277
 
278
278
 
279
- 20行固定表示以外にも、最初のチャットデータ表示をもっと早くする方法を考えたり、Vueで作り直したりするのも面白いと思います。
279
+ 20行固定表示以外にも、最初のチャットデータ表示をもっと早くする方法を考えたり、チャットデータの転送量を減らす方法を考えたり(上記スクリプトだとチャットデータを全部送っている)、Vueで作り直したりするのも面白いと思います。