スプレッドシートのメニューから各シートに飛ぶGASの記述を書いたのですが、できるだけコードを短く書きたいです。
カスタムメニューから各シートに遷移するスクリプトなのですが、いまのままだとシートを追加するごとに更新する必要があり、できるだけ更新箇所を減らそうと思って、いろいろと分けて書いてみました所、煮詰まった状態になります。
コードの書き方が同じことの繰り返しが多くどうみても悪いのですが、どういった関数の記述方法で短くできるのか調べてみてもわからなかったのでお聞きしてみました。
よろしくお願いいたします。
javascript
1var sheetName1 = "シート1"; 2var sheetName2 = "シート2"; 3var sheetName3 = "シート3"; 4 5var functionName1 = "myFunction1"; 6var functionName2 = "myFunction2"; 7var functionName3 = "myFunction3"; 8 9function onOpen() { 10 var ui = SpreadsheetApp.getUi(); 11 var menu = ui.createMenu("カスタムメニュー"); 12 menu.addItem(sheetName1, functionName1); 13 menu.addItem(sheetName2, functionName2); 14 menu.addItem(sheetName3, functionName3); 15 menu.addToUi(); 16} 17 18function onClickItem(num) { 19 var sheetNum = eval("sheetName" + num); 20 var objSpreadsheet = SpreadsheetApp.getActiveSpreadsheet(); 21 var objSheet = objSpreadsheet.getSheetByName(sheetNum); 22 objSpreadsheet.setActiveSheet(objSheet); 23} 24 25function myFunction1() { 26 var name = arguments.callee.name; 27 var num = name.replace(/[^0-9]/g, ""); 28 onClickItem(num); 29} 30 31function myFunction2() { 32 var name = arguments.callee.name; 33 var num = name.replace(/[^0-9]/g, ""); 34 onClickItem(num); 35} 36 37function myFunction3() { 38 var name = arguments.callee.name; 39 var num = name.replace(/[^0-9]/g, ""); 40 onClickItem(num); 41} 42
回答2件
あなたの回答
tips
プレビュー