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

質問編集履歴

2

現状

2017/03/10 07:36

投稿

s.maeda
s.maeda

スコア147

title CHANGED
File without changes
body CHANGED
@@ -62,4 +62,7 @@
62
62
  .onFormSubmit()
63
63
  .create();
64
64
  }
65
- ```
65
+ ```
66
+
67
+ 症状が完全に解決はしていないものの、ご助言いただいた方の回答をBAにいたしました。
68
+ 現在、最下行に挿入されないことで悩んでもしょうがないので、getLastRowを使用せずにフォーム回答が行われた行を特定して処理を行っています。

1

処理概要の追加

2017/03/10 07:36

投稿

s.maeda
s.maeda

スコア147

title CHANGED
File without changes
body CHANGED
@@ -10,4 +10,56 @@
10
10
  なお、問題は常に発生するというわけでもありません。
11
11
 
12
12
  同じ状況である、経験したことがある、解決したことがあるという方は、ご助言賜りたく存じます。
13
- よろしくお願いします。
13
+ よろしくお願いします。
14
+
15
+ <追記>
16
+ まず、。フォームの回答は、スクリプトを使わずに回答先の変更によってスプレッドシートに出力させています。
17
+ その上で、回答が出力されたAシートにおいて、回答データをもとに幾つかデータを追加しています。
18
+ さらに、任意のタイミング(メニューバーにボタン作成)でAシートのデータをB,C・・・シートに必要な分反映しているという感じです。
19
+
20
+ 例)
21
+ 「Aシート:フォーム回答先」
22
+ 回答データ:身長, 体重
23
+ 追加データ:BMI
24
+
25
+ この例をもとにスクリプトを書くとこのような形になっております。
26
+ Aシートでのデータ作成は、フォームの回答を受け付けたタイミングで行っています。
27
+ 他シートへのデータ反映は、Aシートのデータを配列で取得し、他シートに書き込んでいます。
28
+ 今回の問題とは直接の関係がないと思われますので、省略しております。
29
+
30
+ ```Javascript
31
+ function getDatas(){
32
+ var sheet
33
+ = SpreadsheetApp
34
+ .openById("ID")
35
+ .getSheetByName("A");
36
+ var values
37
+ = sheet
38
+ .getDataRange()
39
+ .getValues();
40
+ var lastRow
41
+ = sheet
42
+ .getLastRow();
43
+
44
+ //A列:身長 B列:体重
45
+ //C列:BMI
46
+ values[lastRow][2]
47
+ = values[lastRow][1] / ( (values[lastRow][0]/100) * (values[lastRow][0]/100) );
48
+
49
+ sheet
50
+ .getDataRange()
51
+ .setValues(values);
52
+ }
53
+
54
+ function setTrigger(){
55
+ var form
56
+ = FormApp
57
+ .openById("ID");
58
+
59
+ ScriptApp
60
+ .newTrigger("getDatas")
61
+ .forForm(form)
62
+ .onFormSubmit()
63
+ .create();
64
+ }
65
+ ```