質問編集履歴

2

画像追加しました

2021/06/07 00:49

投稿

KoTT
KoTT

スコア19

test CHANGED
File without changes
test CHANGED
@@ -81,3 +81,23 @@
81
81
  }
82
82
 
83
83
  ```
84
+
85
+
86
+
87
+ イメージ
88
+
89
+ Before : フォームから回答を取得。A2にハイパーリンクが入る。
90
+
91
+ ![イメージ説明](b73a2c05994c6c30af02b5915d80294d.jpeg)
92
+
93
+
94
+
95
+
96
+
97
+ After : スプレッドシートA2のリンクを別名保存してA3コピー&ペーストし、フォームを開いて回答結果を入力。
98
+
99
+ ![イメージ説明](4fd844ba6d44ca356cca56fa733a5b85.jpeg)
100
+
101
+
102
+
103
+ 機能の目的:フォームで取得した過去の回答結果を流用して新しい回答を作成したい。理由は、設問数が多く、その5割程度は前回と同じ回答が多いためです。

1

質問内容を修正しました

2021/06/07 00:48

投稿

KoTT
KoTT

スコア19

test CHANGED
File without changes
test CHANGED
@@ -4,6 +4,80 @@
4
4
 
5
5
  左記を参考にさせいていただき、`https://liapoc.com/googleform-edit.html`
6
6
 
7
- 回答結果が出力されるスプレッドシートに回答編集用URLを追加することができたのですが、
7
+ 回答結果が出力されるスプレッドシートのA列(0番目の列)に回答編集用URLが自動入力されるようにでまし
8
8
 
9
- このハイパリンクをコピーて、いハイパーリンクを生成する・・・といった挙動ができないかと思いまして、、GASの機能になさそうなの、不可能でしょうか??
9
+ 加えて、このスプレッドシトの"回答編集用URL"をコピーする"という挙動にあわせて、回答結果は維持たまま、IDの異なる別の回答を生成する・・・といったことはできないでしょうか
10
+
11
+ ```javascript
12
+
13
+ function SubmitMail(e){
14
+
15
+
16
+
17
+ var sheetId = 'シートのキーID';
18
+
19
+ var sheetName = 'シートの名前';
20
+
21
+
22
+
23
+ //1_フォームの回答シートを取得
24
+
25
+ var SS = SpreadsheetApp.openById(sheetId).getSheetByName(sheetName);
26
+
27
+
28
+
29
+ //2_回答シートを取得
30
+
31
+ var sheetDates = SS.getDataRange();
32
+
33
+
34
+
35
+ //3_フォームIDを保存
36
+
37
+ var formid = 'フォームID';
38
+
39
+
40
+
41
+ //4_回答データ一覧をフォームから取得
42
+
43
+ var formDates = FormApp.openById(formid).getResponses();
44
+
45
+
46
+
47
+
48
+
49
+ for(var i = 0;i<formDates.length;i++){
50
+
51
+
52
+
53
+ //A列にデータが入っていたらスキップ
54
+
55
+ if(sheetDates.getCell(i+2, 1).getValue() != ""){
56
+
57
+ continue;
58
+
59
+ }
60
+
61
+
62
+
63
+ //5_回答データ一覧をフォームから一番最後の編集用URL取得
64
+
65
+ var EditableUrl = formDates[Number(i)].getEditResponseUrl();
66
+
67
+
68
+
69
+ //6_回答用URLを作成
70
+
71
+ var EditableStr = '=HYPERLINK("' + EditableUrl + '","編集用URL.' + Number(i+1) + '")';
72
+
73
+
74
+
75
+ //7_回答用URLをAセルへ挿入
76
+
77
+ sheetDates.getCell(i+2, 1).setValue(EditableStr);
78
+
79
+ }
80
+
81
+ }
82
+
83
+ ```