回答編集履歴
3
answer
CHANGED
@@ -3,7 +3,7 @@
|
|
3
3
|
→ [公式によって修正され、getTitle()が正常に動作するようになりました](https://issuetracker.google.com/issues/72151985#comment9)
|
4
4
|
|
5
5
|
FormApp#getTitle()を使用したコードについては
|
6
|
-
https://teratail.com/questions/kros5rm95gnx42
|
6
|
+
https://teratail.com/questions/kros5rm95gnx42#reply-2hqbt0gt18ne2m
|
7
7
|
を参照してください。
|
8
8
|
|
9
9
|
|
2
修正追記
answer
CHANGED
@@ -1,32 +1,44 @@
|
|
1
|
-
Form.getTitle() は現時点ではnullを返し有効に機能しません。
|
1
|
+
~~Form.getTitle() は現時点ではnullを返し有効に機能しません。
|
2
|
-
([Issue trackerより](https://issuetracker.google.com/issues/36762862))
|
2
|
+
([Issue trackerより](https://issuetracker.google.com/issues/36762862))~~
|
3
|
-
|
3
|
+
→ [公式によって修正され、getTitle()が正常に動作するようになりました](https://issuetracker.google.com/issues/72151985#comment9)
|
4
|
+
|
5
|
+
FormApp#getTitle()を使用したコードについては
|
6
|
+
https://teratail.com/questions/kros5rm95gnx42
|
7
|
+
を参照してください。
|
8
|
+
|
9
|
+
|
10
|
+
下記はgetTitle()のバグ修正前の対応方法として残しておきます。
|
11
|
+
|
12
|
+
---
|
13
|
+
|
4
|
-
|
14
|
+
DriveApp と Form.getId()で代用します。
|
5
|
-
|
6
|
-
|
15
|
+
|
16
|
+
|
7
|
-
1.各フォームについて、フォームのスクリプトで下記を記述します。
|
17
|
+
1.各フォームについて、フォームのスクリプトで下記を記述します。
|
8
|
-
(スプレッドシートのスクリプトではありません。各フォーム編集画面の右上の縦に並んだ3点マークから「<>スクリプトエディタ」を選択してください)
|
18
|
+
(スプレッドシートのスクリプトではありません。各フォーム編集画面の右上の縦に並んだ3点マークから「<>スクリプトエディタ」を選択してください)
|
9
|
-
|
10
|
-
|
19
|
+
|
20
|
+
|
11
|
-
```
|
21
|
+
```
|
12
|
-
function onFormSubmit(e) {
|
22
|
+
function onFormSubmit(e) {
|
13
|
-
//FormApp.getActiveForm();
|
23
|
+
//FormApp.getActiveForm();
|
14
|
-
const ssid = e.source.getDestinationId();
|
24
|
+
const ssid = e.source.getDestinationId();
|
15
|
-
const title = DriveApp.getFileById(e.source.getId()).getName()
|
25
|
+
const title = DriveApp.getFileById(e.source.getId()).getName()
|
16
|
-
SpreadsheetApp.openById(ssid).getActiveSheet().setName(title)
|
26
|
+
SpreadsheetApp.openById(ssid).getActiveSheet().setName(title)
|
17
|
-
}
|
27
|
+
}
|
18
|
-
|
28
|
+
|
19
|
-
```
|
29
|
+
```
|
30
|
+
|
31
|
+
|
20
|
-
※( //FormApp.getActiveForm();のコメントは外しても外さなくてもよいです。権限承認のために必要)
|
32
|
+
※( //FormApp.getActiveForm();のコメントは外しても外さなくてもよいです。権限承認のために必要)
|
21
|
-
|
22
|
-
|
33
|
+
|
34
|
+
|
23
|
-
2.トリガーでonFormSubmit関数を、フォーム送信時に実行するように設定します。
|
35
|
+
2.トリガーでonFormSubmit関数を、フォーム送信時に実行するように設定します。
|
24
|
-
|
36
|
+
|
25
|
-
3.スクリプトエディタ上で上記コードを1度実行し、必要な権限を承認します。
|
37
|
+
3.スクリプトエディタ上で上記コードを1度実行し、必要な権限を承認します。
|
26
|
-
|
38
|
+
|
27
|
-
4.あとは各フォームから(最低1回)回答すれば、フォームタイトルがシート名に変わると思います。
|
39
|
+
4.あとは各フォームから(最低1回)回答すれば、フォームタイトルがシート名に変わると思います。
|
28
|
-
|
40
|
+
|
29
|
-
※各フォームタイトルの名前は必ず異なる名前であることを確認してください。同じフォームタイトルから回答すると、同じシート名に変えようとするためエラーになりタイトルは変わりません。
|
41
|
+
※各フォームタイトルの名前は必ず異なる名前であることを確認してください。同じフォームタイトルから回答すると、同じシート名に変えようとするためエラーになりタイトルは変わりません。
|
30
|
-
|
42
|
+
|
31
|
-
・DriveAppには使用回数制限があるため、他のスクリプトでDriveAppを使っている場合は、タイトルを変えたフォームフォームのトリガーは順次削除した方がよいかもしれません。
|
43
|
+
・DriveAppには使用回数制限があるため、他のスクリプトでDriveAppを使っている場合は、タイトルを変えたフォームフォームのトリガーは順次削除した方がよいかもしれません。
|
32
44
|
(そうしないと回答がある度にトリガーが呼ばれDriveAppの使用回数を消費することになるため)
|
1
修正
answer
CHANGED
@@ -11,9 +11,9 @@
|
|
11
11
|
```
|
12
12
|
function onFormSubmit(e) {
|
13
13
|
//FormApp.getActiveForm();
|
14
|
-
ssid = e.source.getDestinationId();
|
14
|
+
const ssid = e.source.getDestinationId();
|
15
|
-
|
15
|
+
const title = DriveApp.getFileById(e.source.getId()).getName()
|
16
|
-
|
16
|
+
SpreadsheetApp.openById(ssid).getActiveSheet().setName(title)
|
17
17
|
}
|
18
18
|
|
19
19
|
```
|