Google apps script 在Google Sheets中,使用应用程序脚本设置动态下拉列表
我正在尝试使用Apps脚本在Google工作表中设置一个动态下拉列表。除了在必要的单元格中设置数据验证外,我设法使大多数部件正常工作:Google apps script 在Google Sheets中,使用应用程序脚本设置动态下拉列表,google-apps-script,google-sheets,Google Apps Script,Google Sheets,我正在尝试使用Apps脚本在Google工作表中设置一个动态下拉列表。除了在必要的单元格中设置数据验证外,我设法使大多数部件正常工作: function sheetByName(ssId, sheetName) { var ss = SpreadsheetApp.openById(ssId); var sheet = ss.getSheetByName(sheetName); return sheet; }; function columnByName(sheet, column
function sheetByName(ssId, sheetName) {
var ss = SpreadsheetApp.openById(ssId);
var sheet = ss.getSheetByName(sheetName);
return sheet;
};
function columnByName(sheet, columnName) {
var data = sheet.getDataRange().getValues();
var column = data[0].indexOf(columnName);
return column;
};
function columnValues(sheet, index) {
var data = sheet.getDataRange().getValues();
var values = [];
for(n=1; n<data.length; ++n) {
values.push(data[n][index]);
}
return values;
}
function columnSetDataValidation(sheet, index, options) {
var data = sheet.getDataRange().getValues();
var rule = SpreadsheetApp.newDataValidation()
.requireValueInList(options)
.setAllowInvalid(true)
.build();
for(n=1; n<data.length; ++n) {
var cell = data[n][index];
};
};
function dropDownBedrijven() {
var sheetCollegas = sheetByName("<<ID HERE>>", "Collegas");
var sheetBedrijven = sheetByName("<<ID HERE>>", "Bedrijven");
var getColumnIndexInBedijven = columnByName(sheetBedrijven, "Bedrijf");
var getColumnIndexInCollegas = columnByName(sheetCollegas, "Bedrijf");
var bedrijven = columnValues(sheetBedrijven, getColumnIndexInBedijven).filter(item => item);
columnSetDataValidation(sheetCollegas, getColumnIndexInCollegas, bedrijven);
};
函数sheetByName(ssId,sheetName){
var ss=电子表格应用程序openById(ssId);
var sheet=ss.getSheetByName(sheetName);
报税表;
};
函数columnByName(工作表,columnName){
var data=sheet.getDataRange().getValues();
var column=data[0]。indexOf(columnName);
返回列;
};
函数列值(表、索引){
var data=sheet.getDataRange().getValues();
var值=[];
用于(n=1;n项);
columnSetDataValidation(sheetCollegas、getColumnIndexInCollegas、bedrijven);
};
我无法获取函数columnSetDataValidation
在所需单元格中设置数据验证
你知道怎么做吗?试试这个:
function columnSetDataValidation() {
const ss=SpreadsheetApp.getActive();
const sheet=ss.getSheetByName('Sheet1');
const range = sheet.getRange(2,4,sheet.getLastRow()-1);//putting validation in column 4
const options=[1,2,3,4,5];
const rule = SpreadsheetApp.newDataValidation()
.requireValueInList(options)
.setAllowInvalid(true)
.build();
range.setDataValidation(rule);
}
你需要使用一个范围
在函数columnSetDataValidation
中,您正确构建了规则,但未能将规则分配给某个范围。您正在循环范围的值,然后更改var单元格的值
,直到循环结束。您没有调用range.setDataValidation(规则)
请尝试以下解决方案:
函数列SetDataValidation(工作表、索引、选项){
var range=sheet.getDataRange();
var rule=SpreadsheetApp.newDataValidation()
.RequiremeEinList(选项)
.setAllowInvalid(true)
.build();
对于(n=1;n
参考资料: