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

質問編集履歴

1

コードを追加させていただきました。このコードで時間が10秒以上かかってしまうのは、スプレッドシート内でcountifやvlookup等を使っているのがよくないのでしょうか。

2020/03/04 11:23

投稿

tetsu911
tetsu911

スコア12

title CHANGED
File without changes
body CHANGED
@@ -6,4 +6,85 @@
6
6
  残りの8秒程度がどこで発生していて、どのようにすれば改善できるか教えていただけないでしょうか。
7
7
  下記の画像はプログラム実行時のGoogle ChromeのPerformanceです。9秒程度、script.googleでかかっていますが、この数字とGAS内での計測結果が異なるため、この数字をどうやって減らせば良いのか分からないでいます。
8
8
 
9
- ![イメージ説明](806726a155eef27deb3c10cdf636c49b.png)
9
+ ![イメージ説明](806726a155eef27deb3c10cdf636c49b.png)
10
+
11
+ ```GAS
12
+ function doGet(e) {
13
+ if (!e.parameter.page) {
14
+ return HtmlService.createTemplateFromFile('index').evaluate();
15
+ }
16
+ return HtmlService.createTemplateFromFile(e.parameter['page']).evaluate();
17
+ }
18
+
19
+ var id = "";
20
+ var spreadSheet = SpreadsheetApp.openById(id);
21
+ var t=HtmlService.createTemplateFromFile("index");
22
+
23
+ //それぞれのシートを取得
24
+ var sheet = spreadSheet.getSheetByName("Data");
25
+ var sheet2 = spreadSheet.getSheetByName("Phone");
26
+ var sheet3 = spreadSheet.getSheetByName("Warning");
27
+
28
+ //それぞれのシートの最終行を取得
29
+ var last_row = sheet.getLastRow();
30
+ var last_row2 = sheet2.getLastRow();
31
+
32
+
33
+ //それぞれのシートの数値を取得
34
+ var ary = sheet.getRange(2,1,last_row,5).getValues();
35
+ var ary2 = sheet2.getRange(2,1,last_row2,8).getValues();
36
+ var last_row3 = sheet3.getLastRow();
37
+ var ary3 = sheet3.getRange(1,1,last_row3,2).getValues();
38
+
39
+ for (var i = 0; i < last_row; i++){
40
+ if(isNaN(ary[i][1]) || ary[i][1] > 156 || ary[i][1] == ""){
41
+ ary[i][1] = 170;
42
+ }}
43
+
44
+ //HMTLで変数を使用できるようにする
45
+ t.ary = ary;
46
+ t.last_row = last_row;
47
+ t.ary2 = ary2;
48
+ t.last_row2 = last_row2;
49
+ t.ary3 = ary3;
50
+ t.last_row3 = last_row3;
51
+
52
+ Javascript
53
+ function firstscript(){
54
+
55
+ <? for(var j = 1; j < 41; j++){ ?>
56
+ var target = document.getElementById("w"+<?= j ?>);
57
+
58
+ if(<?= ary3[j][1] ?> == "予約済"){
59
+ target.innerHTML = "<?= ary3[j][0] ?>";
60
+ target.style.backgroundColor = "lightpink";
61
+
62
+ }else if(<?= ary3[j][1] ?> == "-"){
63
+ target.style.backgroundColor = "#98FB98";
64
+ target.innerHTML = "<?= ary3[j][0] ?>";
65
+
66
+ }
67
+ <? }; ?>
68
+
69
+ <? for(var i = 0;i < last_row; i++){ ?>
70
+ var target = document.getElementById("cb"+<?= ary[i][1] ?>);
71
+
72
+ if(<?= ary[i][2] ?> == ""){
73
+ target.style.backgroundColor = "white";
74
+ target.innerHTML = "<?= ary[i][1] ?>";
75
+ }else if(<?= ary[i][3] ?> == "予約済"){
76
+ target.style.backgroundColor = "lightyellow";
77
+ target.innerHTML = "<?= ary[i][1] ?> <?= ary[i][2] ?>";
78
+ }else if(<?= ary[i][4] ?> < 1){
79
+ target.style.backgroundColor = "#aaaaaa";
80
+ target.innerHTML = "<?= ary[i][1] ?> <?= ary[i][2] ?>";
81
+ }else{
82
+ target.style.backgroundColor = "#98FB98";
83
+ target.innerHTML = "<?= ary[i][1] ?> <?= ary[i][2] ?>";
84
+ }
85
+ <? }; ?>
86
+ }
87
+
88
+ window.onload = firstscript;
89
+ </script>
90
+ ```