我正在为Google Spreadsheets构建脚本,以创建动态下拉列表。这是用JavaScript编写的,但这是我工作的第一批工具,需要一些逻辑上的帮助。
该代码有效,但是现在我想要的是使B列和C列取决于在A列中选择的类别。
下面的脚本具有三个级别:主类别,子组(取决于主类别)和子子组(取决于子组)。
因此,就我而言,我正在为视频内容添加多个属性的标签。因此,主要类别可能是“音频”,我想为同一子组中的两个项目标记它。
基本上,如何使用下面的脚本使B列和C列仅依赖于A列的选择?
我很确定我需要在这里进行一些调整: aColumn + 1);
function depDrop_(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 == 1 && SpreadsheetApp.getActiveSheet()){
var range = SpreadsheetApp.getActiveSheet().getRange(aCell.getRow(), aColumn + 1);
var sourceRange = SpreadsheetApp.getActiveSpreadsheet().getRangeByName(aCell.getValue());
depDrop_(range, sourceRange);
}
else if (aColumn == 2 && SpreadsheetApp.getActiveSheet()){
var range = SpreadsheetApp.getActiveSheet().getRange(aCell.getRow(), aColumn + 1);
var sourceRange = SpreadsheetApp.getActiveSpreadsheet().getRangeByName(aCell.getValue());
depDrop_(range, sourceRange);
}
}
这是一些可能有用的代码。我还没有测试过,但是看看我做了什么。弄清楚代码的逻辑和改进;运行它,看看会发生什么。如果遇到无法解决的错误或意外结果,请通知我。
function onEdit(e) { //Use the event - e
var ss = SpreadsheetApp.getActiveSpreadsheet(); //get spreadsheet - ss
var sh = ss.getActiveSheet(); //get sheet - sh
var cellRng = e.range; //Range of cell that was edited
var rowEdited = cellRng.getRow();
var columnEdited = cellRng.getColumn();
var range; //define a variable for a range, and leave it undefined
if (columnEdited === 1) {//If column one was edited, change the data validation in the next column
//Run the function to update the validation twice, once for column B, once for column C
range = sh.getRange(rowEdited, columnEdited + 1); //Update Column B
depDrop_(range, cellRng);
range = sh.getRange(rowEdited, columnEdited + 2); //Update column C
depDrop_(range, cellRng);
};
//If column 1 was not edited, then do nothing
};
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句