質問編集履歴

2

現状

2017/03/10 07:36

投稿

s.maeda
s.maeda

スコア147

test CHANGED
File without changes
test CHANGED
@@ -127,3 +127,9 @@
127
127
  }
128
128
 
129
129
  ```
130
+
131
+
132
+
133
+ 症状が完全に解決はしていないものの、ご助言いただいた方の回答をBAにいたしました。
134
+
135
+ 現在、最下行に挿入されないことで悩んでもしょうがないので、getLastRowを使用せずにフォーム回答が行われた行を特定して処理を行っています。

1

処理概要の追加

2017/03/10 07:36

投稿

s.maeda
s.maeda

スコア147

test CHANGED
File without changes
test CHANGED
@@ -23,3 +23,107 @@
23
23
  同じ状況である、経験したことがある、解決したことがあるという方は、ご助言賜りたく存じます。
24
24
 
25
25
  よろしくお願いします。
26
+
27
+
28
+
29
+ <追記>
30
+
31
+ まず、。フォームの回答は、スクリプトを使わずに回答先の変更によってスプレッドシートに出力させています。
32
+
33
+ その上で、回答が出力されたAシートにおいて、回答データをもとに幾つかデータを追加しています。
34
+
35
+ さらに、任意のタイミング(メニューバーにボタン作成)でAシートのデータをB,C・・・シートに必要な分反映しているという感じです。
36
+
37
+
38
+
39
+ 例)
40
+
41
+ 「Aシート:フォーム回答先」
42
+
43
+ 回答データ:身長, 体重
44
+
45
+ 追加データ:BMI
46
+
47
+
48
+
49
+ この例をもとにスクリプトを書くとこのような形になっております。
50
+
51
+ Aシートでのデータ作成は、フォームの回答を受け付けたタイミングで行っています。
52
+
53
+ 他シートへのデータ反映は、Aシートのデータを配列で取得し、他シートに書き込んでいます。
54
+
55
+ 今回の問題とは直接の関係がないと思われますので、省略しております。
56
+
57
+
58
+
59
+ ```Javascript
60
+
61
+ function getDatas(){
62
+
63
+ var sheet
64
+
65
+ = SpreadsheetApp
66
+
67
+ .openById("ID")
68
+
69
+ .getSheetByName("A");
70
+
71
+ var values
72
+
73
+ = sheet
74
+
75
+ .getDataRange()
76
+
77
+ .getValues();
78
+
79
+ var lastRow
80
+
81
+ = sheet
82
+
83
+ .getLastRow();
84
+
85
+
86
+
87
+ //A列:身長 B列:体重
88
+
89
+ //C列:BMI
90
+
91
+ values[lastRow][2]
92
+
93
+ = values[lastRow][1] / ( (values[lastRow][0]/100) * (values[lastRow][0]/100) );
94
+
95
+
96
+
97
+ sheet
98
+
99
+ .getDataRange()
100
+
101
+ .setValues(values);
102
+
103
+ }
104
+
105
+
106
+
107
+ function setTrigger(){
108
+
109
+ var form
110
+
111
+ = FormApp
112
+
113
+ .openById("ID");
114
+
115
+
116
+
117
+ ScriptApp
118
+
119
+ .newTrigger("getDatas")
120
+
121
+ .forForm(form)
122
+
123
+ .onFormSubmit()
124
+
125
+ .create();
126
+
127
+ }
128
+
129
+ ```