有没有人有任何脚本可以让我使用 Google Sheet 中的应用程序脚本打印 Drop Down 中的所有选项?
我相信你的目标如下。
- 您想要使用 Google Apps 脚本从下拉列表类型的 DataValidation 中检索选项值。
在这种情况下,我认为getDataValidation()
and getCriteriaValues()
可用于实现您的目标。
示例脚本:
在此示例脚本中,选项值是从单元格“A1”中的 DataValidation 检索的。
const sheet = SpreadsheetApp.getActiveSheet();
const dataValidation = sheet.getRange("A1").getDataValidation();
const check = [SpreadsheetApp.DataValidationCriteria.VALUE_IN_RANGE, SpreadsheetApp.DataValidationCriteria.VALUE_IN_LIST];
if (dataValidation && check.includes(dataValidation.getCriteriaType())) {
const [criteria] = dataValidation.getCriteriaValues();
const res = criteria.toString() == "Range" ? criteria.getValues() : criteria;
console.log(res)
}
Note:
-
如果要从范围内的多个 DataValidation 检索选项值,还可以使用以下脚本。
const sheet = SpreadsheetApp.getActiveSheet();
const dataValidations = sheet.getRange(1, 1, sheet.getMaxRows(), sheet.getMaxColumns()).getDataValidations();
const check = [SpreadsheetApp.DataValidationCriteria.VALUE_IN_RANGE, SpreadsheetApp.DataValidationCriteria.VALUE_IN_LIST];
const res = dataValidations.reduce((ar, r, i) => {
r.forEach((c, j) => {
if (c && check.includes(c.getCriteriaType())) {
const [criteria] = c.getCriteriaValues();
ar.push({row: i + 1, column: j + 1, values: criteria.toString() == "Range" ? criteria.getValues() : criteria});
}
});
return ar;
}, []);
console.log(res)
-
如果是getDataValidations()
,当下拉列表为空值时,getDataRange()
无法检索范围。所以在这个样本中,getMaxRows()
and getMaxColumns()
被使用。这样,上面的第二个脚本就可以检索工作表中下拉列表类型的所有 DataValidations。
参考:
- 获取数据验证() https://developers.google.com/apps-script/reference/spreadsheet/range#getdatavalidation
- 数据验证类 https://developers.google.com/apps-script/reference/spreadsheet/data-validation
- 获取数据验证() https://developers.google.com/apps-script/reference/spreadsheet/range#getdatavalidations
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)