回答編集履歴
5
test
CHANGED
@@ -1,5 +1,6 @@
|
|
1
1
|
質問の内容が、下記のように「複数のメニューに対して同一の関数(clickMenu)を呼び出すようになっており、呼び出し先のclickMenu関数内でどのメニューがクリックされたか判別したい」という意味ならば
|
2
2
|
残念ながらそのような動作を標準的なGASのカスタムメニューでおこなうことはできません。
|
3
|
+
https://stackoverflow.com/questions/50946493/how-to-know-which-menu-item-was-clicked
|
3
4
|
```javascript
|
4
5
|
function onOpen() {
|
5
6
|
|
@@ -23,6 +24,7 @@
|
|
23
24
|
```
|
24
25
|
|
25
26
|
下記のようにevalを使って無理やり動的に関数を作成することはできなくもないですが、呼び出し先の関数の処理の汎用性に欠けるため、質問のようなユースケースには対応できないと思われます。
|
27
|
+
https://issuetracker.google.com/issues/36753036?pli=1
|
26
28
|
```
|
27
29
|
|
28
30
|
//get the student data
|
@@ -39,4 +41,8 @@
|
|
39
41
|
}
|
40
42
|
spreadsheet.addMenu("MyMenu", items);
|
41
43
|
}
|
44
|
+
|
45
|
+
function createQuiz(arg) {
|
46
|
+
//
|
47
|
+
}
|
42
48
|
```
|
4
test
CHANGED
@@ -25,22 +25,18 @@
|
|
25
25
|
下記のようにevalを使って無理やり動的に関数を作成することはできなくもないですが、呼び出し先の関数の処理の汎用性に欠けるため、質問のようなユースケースには対応できないと思われます。
|
26
26
|
```
|
27
27
|
|
28
|
-
|
28
|
+
//get the student data
|
29
|
-
|
29
|
+
var sData = SpreadsheetApp.getActive().getSheets()[0].getDataRange().getValues();
|
30
|
-
{ name: 'Create quiz for student two', functionName: 'createQuiz_two' }
|
31
|
-
];
|
32
|
-
|
33
30
|
|
34
31
|
for(i in sData) {
|
35
32
|
eval("function createQuiz_" + sData[i][0] + "() { createQuiz('" + sData[i][0] + "'); }");
|
36
33
|
}
|
37
34
|
|
38
35
|
function onOpen() {
|
39
|
-
//get the student data
|
40
|
-
var sData = SpreadsheetApp.getActive().getSheets()[0].getDataRange().getValues();
|
41
36
|
var items = [];
|
42
37
|
for(i in sData) {
|
43
38
|
items.push({ name: 'Create Quiz for ' + sData[i][0], functionName: 'createQuiz_' + sData[i][0] });
|
44
39
|
}
|
40
|
+
spreadsheet.addMenu("MyMenu", items);
|
45
41
|
}
|
46
42
|
```
|
3
test
CHANGED
@@ -22,7 +22,7 @@
|
|
22
22
|
}
|
23
23
|
```
|
24
24
|
|
25
|
-
下記のようにevalを使って無理やり動的に関数を作成することはできなくもないですが、汎用性に欠けるため、質問のようなユースケースには対応できないと思われます。
|
25
|
+
下記のようにevalを使って無理やり動的に関数を作成することはできなくもないですが、呼び出し先の関数の処理の汎用性に欠けるため、質問のようなユースケースには対応できないと思われます。
|
26
26
|
```
|
27
27
|
|
28
28
|
var menu = [
|
2
test
CHANGED
@@ -1,5 +1,5 @@
|
|
1
1
|
質問の内容が、下記のように「複数のメニューに対して同一の関数(clickMenu)を呼び出すようになっており、呼び出し先のclickMenu関数内でどのメニューがクリックされたか判別したい」という意味ならば
|
2
|
-
残念ながらそのような動作をGASのカスタムメニューでおこなうことはできません。
|
2
|
+
残念ながらそのような動作を標準的なGASのカスタムメニューでおこなうことはできません。
|
3
3
|
```javascript
|
4
4
|
function onOpen() {
|
5
5
|
|
@@ -21,3 +21,26 @@
|
|
21
21
|
// この中ではどのメニューがクリックされたか判別することはできない。(仕様)
|
22
22
|
}
|
23
23
|
```
|
24
|
+
|
25
|
+
下記のようにevalを使って無理やり動的に関数を作成することはできなくもないですが、汎用性に欠けるため、質問のようなユースケースには対応できないと思われます。
|
26
|
+
```
|
27
|
+
|
28
|
+
var menu = [
|
29
|
+
{ name: 'Create quiz for student one', functionName: 'createQuiz_one' },
|
30
|
+
{ name: 'Create quiz for student two', functionName: 'createQuiz_two' }
|
31
|
+
];
|
32
|
+
|
33
|
+
|
34
|
+
for(i in sData) {
|
35
|
+
eval("function createQuiz_" + sData[i][0] + "() { createQuiz('" + sData[i][0] + "'); }");
|
36
|
+
}
|
37
|
+
|
38
|
+
function onOpen() {
|
39
|
+
//get the student data
|
40
|
+
var sData = SpreadsheetApp.getActive().getSheets()[0].getDataRange().getValues();
|
41
|
+
var items = [];
|
42
|
+
for(i in sData) {
|
43
|
+
items.push({ name: 'Create Quiz for ' + sData[i][0], functionName: 'createQuiz_' + sData[i][0] });
|
44
|
+
}
|
45
|
+
}
|
46
|
+
```
|
1
test
CHANGED
@@ -18,5 +18,6 @@
|
|
18
18
|
|
19
19
|
function clickMenu() {
|
20
20
|
// クリック時の処理
|
21
|
+
// この中ではどのメニューがクリックされたか判別することはできない。(仕様)
|
21
22
|
}
|
22
23
|
```
|