GASのエラー(App Scriptでドロップダウンリストを作りたい)
解決したいこと
https://www.youtube.com/watch?v=s-I8Z4nTDak
上の動画を参考に、
Google Sheets上でDependent Drop Down Listを実現するべく
コーデイング(ほぼ丸写しした・・・はずですが)しましたが、実行すると以下のエラーが発生します。
Exception: The parameters (null,number) don't match the method signature for SpreadsheetApp.Sheet.getRange
var mainWsName = "Input";
var optionsWsName = "Product List";
var firstLevelColumn = 2;
var secondLevelColumn = 3;
var thirdLevelColumn = 4;
var ws = SpreadsheetApp.getActiveSpreadsheet().getSheetByName(mainWsName);
var wsOptions = SpreadsheetApp.getActiveSpreadsheet().getSheetByName(optionsWsName);
var options = wsOptions.getRange(2, 1,wsOptions.getLastRow()-1,3).getValues();
function onEdit(activeCell){
var activeCell = ws.getActiveCell();
var val = activeCell.getValue();
var r = activeCell.getRow();
var c = activeCell.getColumn();
var wsName = activeCell.getSheet().getName();
if(wsName === mainWsName && c === firstLevelColumn && r > 1){
applyFirstLevelValidation(val,r);
} else if(wsName === mainWsName && c === secondLevelColumn && r > 1){
applySecondLevelValidation(val,r);
}
} //end onEdit
function applyFirstLevelValidation(val,r){
if(val === ""){
ws.getRange(r, secondLevelColumn).clearContent();
ws.getRange(r, secondLevelColumn).clearDataValidations();
} else {
ws.getRange(r, secondLevelColumn).clearContent();
ws.getRange(r, secondLevelColumn).clearDataValidations();
var filteredOptions = options.filter(function(o){ return o[0] === val });
var listToApply = filteredOptions.map(function(o){ return o[1] });
var cell = ws.getRange(r, secondLevelColumn);
applyValidtionToCell(listToApply,cell);
}
}
function applyValidtionToCell(list,cell){
var rule = SpreadsheetApp
.newDataValidation()
.requireValueInList(list)
.setAllowInvalid(false)
.build();
cell.setDataValidation(rule);
}
自分で試したこと
英語&国語でググってみましたが、解決策は見つからず。GASでプログラム初学者なので
完全に手詰まりです。
Google Sheetsは2行目で製品のジャンルを選択するとそのジャンルの製品が3...4行目のドロップダウンメニューに表示されるSheetを目指しています。
一応動くのですが、エラーが気になってこの質問を投稿しました。
同じ問題が起こっている方、解決できた方、お知恵&ご助言いただければ幸ひです。
0