【发布时间】:2019-01-03 19:25:54
【问题描述】:
我正在尝试设置动态的、相关的、下拉数据验证列表。目的是当我从 A 列中的列表中选择一个项目时,B 列中的下拉列表将自动更改以反映可能的选项。
尽管我是编码新手,但我已经设法让这部分工作在我想要的工作表上。
但是,当我在另一张纸上进行任何更改时,它也会对另一张纸进行更改。我需要这个脚本只在一张纸上工作,不知道怎么做。
似乎人们在这里遇到了类似的问题,但我无法根据我的情况调整他们的解决方案。
我还尝试用我想要更改的工作表替换 getSheetByName 的 getActiveSheet,但它似乎不起作用。
function onEdit() {
var activecell = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet().getActiveCell();
var datass = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("Sectors");
if(activecell.getColumn() == 3 && activecell.getRow() >1 ) {
activecell.offset(0, 1).clearContent().clearDataValidations();
if(activecell.isBlank()){
}
var sector1 = datass.getRange(1, 1, 1, datass.getLastColumn()).getValues();
var sector1Index = sector1[0].indexOf(activecell.getValue()) +1 ;
var validationRange1 = datass.getRange(2, sector1Index, 25);
var validationRule1 = SpreadsheetApp.newDataValidation().requireValueInRange(validationRange1);
activecell.offset(0, 1).setDataValidation(validationRule1)
}
}
当我在另一张纸上进行任何更改时,它也会对另一张纸进行更改。我需要这个脚本只在一张纸上工作,不知道怎么做。
谢谢
【问题讨论】:
-
看看这个answer
-
@Cooper 谢谢你的帮助。我一直在尝试在这里整合您的其他回复,但我可能遗漏了一些东西,因为我仍然无法完成这项工作。我收到此错误:无法从未定义中读取属性“范围”
-
我能够通过以下方式解决我的问题:'code' function onEdit() { var s = SpreadsheetApp.getActiveSheet(); if (s.getName() == 'Dealflow') {
-
如果您在代码中使用事件对象,您可以使用 var
s=e.range.getSheet();
标签: google-apps-script google-sheets triggers