私は次の式を機能させようとしています:
function setDataValid(range, sourceRange) {
var rule = SpreadsheetApp.newDataValidation().requireValueInRange(sourceRange, true).build();
range.setDataValidation(rule);
}
function onEdit() {
var aCell = SpreadsheetApp.getActiveSheet().getActiveCell();
var aColumn = aCell.getColumn();
if (aColumn == 2 && SpreadsheetApp.getActiveSheet().getName() == 'Local' ) {
var range = SpreadsheetApp.getActiveSheet().getRange(aCell.getRow(), aColumn + 1);
var sourceRange = SpreadsheetApp.getActiveSpreadsheet().getRangeByName(aCell.getValue());
setDataValid(range, sourceRange)
}
}
OnEdit()をデバッグするとき、setDataValid(range、sourceRange)のsourceRangeがnullであることを示します。範囲は私のシート「ローカル」にあるので、getActiveSpreadsheet()を名前でスプレッドシートを取得するように変更しようとしています。誰でも助けることができますか?
スプレッドシートで名前でシートを取得するを使用します。
var sheet = SpreadsheetApp.getActive().getSheetByName('Local')
ステートメントを確認してください
var sourceRange = SpreadsheetApp.getActiveSpreadsheet().getRangeByName(aCell.getValue());
これはnullを返すものでなければなりません。原因については、 公式ドキュメントはこちら をご覧ください。
var sourceRange = SpreadsheetApp.getActiveSpreadsheet().getRangeByName('Local!TaxRates')
範囲を取得する必要があります。