gasでラジオボタン的な機能=単一選択しかできない、排他処理が入ったコントロール,checkboxを作成したく思っています。
ぐぐりましたら、yahoo知恵袋では以下がみつかりました。
リンク内容
上記を自分の環境で再現しようと思ってもできないため、他をさがしましたら、海外サイトで以下がありました。
リンク内容
gas
1//from this sight: https://spreadsheet.dev/radio-buttons-in-google-sheets-using-apps-script 2//@OnlyCurrentDoc 3function setUpEditTrigger() { 4 var triggers = ScriptApp.getProjectTriggers(); 5 if(triggers != null && triggers.length > 0) 6 return; 7 ScriptApp.newTrigger("ensureSingleCheckboxChecked").forSpreadsheet(SpreadsheetApp.getActive()).onEdit().create(); 8} 9 10function ensureSingleCheckboxChecked(e) { 11 if(e != null && 12 e.range.rowStart === e.range.rowEnd && 13 e.range.columnStart === 1 && 14 e.range.columnEnd === 1) { 15 //Edit occurred in column A and a single cell was edited 16 if(e.oldValue === "false" && e.value === "TRUE") { 17 //A checkbox was checked 18 uncheckOtherCheckboxes(e.range.rowStart); 19 } 20 } 21} 22 23function uncheckOtherCheckboxes(rowToIgnore) { 24 var range = SpreadsheetApp.getActive().getSheetByName("Employees").getRange("A:A"); 25 var values = range.getValues(); 26 values.forEach(function (row, index) { 27 if(index != 0 && rowToIgnore != (index + 1)) { 28 values[index][0] = false; 29 } 30 }); 31 range.setValues(values); 32}
↑↑↑↑これを自分の環境でやろうとしたら、できるはできました!
full codeの箇所をスクリプトエディタにコピペ
シート名を"Employees"にして、A列に適当にチェックボックスをつけて、、見事に排他処理はしてくれましたが(余計なチェックボックスのチェックがオフになるのに時間が若干かかります。)、、下図のように、1000行までFALSEになってしまいます。
表示させているチェックボックスだけチェックオフにしてくれればいいのに、、余計な他の行に"FALSE"付与をやめる方法を教えてください。
==自分でのトライ
getRange("A:A")
を、チェックボックスを配置したセルのみ、
getRange("A1:A5")
にしましたが、排他処理そのものが機能しなくなりました。
お手数をおかけしますがヘルプのほどお願いします。
利用環境:
Windows 10内Chromeからのgoogle ドキュメント利用
回答1件
あなたの回答
tips
プレビュー