google-apps-script - 根据单元格值显示或隐藏多行
问题描述
我正在尝试创建一个电子表格,该电子表格根据某个单元格 (B2) 值隐藏行。
我遇到问题,有时我的代码不适用于某些 if 语句,但适用于其他语句。例如,“Kombucha”和“Koji” if 语句不起作用,但“Sweet Fermentation”可以。
电子表格在这里,下面是我的代码:
function onEdit2(e) {
var sh=e.range.getSheet();
var acid=[4, 6, 8];
if(sh.getName()=='Master' && e.range.columnStart==2 && e.range.rowStart==2) {
e.source.toast(e.value);
if(e.value=="Acid") {
sh.hideRows(12,73);
sh.hideRows(33,52);
sh.hideRows(53,72);
sh.hideRows(73,84);
sh.showRows (9,11);
}
if(e.value=="Kombucha") {
sh.hideRows(53,72);
}
if(e.value=="Koji") {
sh.hideRows(12,32);
}
if(e.value=="Sweet Fermentation") {
sh.hideRows(12,61);
}
else{
sh.showRows(1,32);
sh.showRows(33,52);
sh.showRows(53,72);
sh.showRows(73,84);
}
if(e.value=="All"){
sh.showRows (1,100)
}
}
}
非常感谢你的帮助。我对 Javascript 非常熟悉,并且想学习为我的公司制作更好的电子表格。
解决方案
尝试这个:
function onMyEdit(e) {
e.source.toast(e.value);
var sh = e.range.getSheet();
if (sh.getName() == 'Sheet0' && e.range.columnStart == 2 && e.range.rowStart == 2) {
e.source.toast('cond')
if (e.value == "Acid") {
sh.hideRows(3, 8);
}
if (e.value == "Kombucha") {
sh.hideRows(12, 10);
}
if (e.value == "Koji") {
sh.hideRows(23, 10);
}
if (e.value == "All") {
sh.showRows(1, 100)
}
}
}
这些都没有重叠,所以很容易看出它是如何工作的。你遇到的问题是关于甜发酵的 else 子句总是显示你试图从上面隐藏的行。
function onMyEdit(e) {
e.source.toast(e.value);
var sh = e.range.getSheet();
if (sh.getName() == 'Sheet0' && e.range.columnStart == 2 && e.range.rowStart == 2) {
e.source.toast('cond')
if (e.value == "Acid") {
sh.hideRows(3, 8);
}
if (e.value == "Kombucha") {
sh.hideRows(12, 10);
}
if (e.value == "Koji") {
sh.hideRows(23, 52);
}
if(e.value == "Sweet Fermentation") {
sh.hideRows(75,25)
} else {
sh.showRows(75,25);
}
if (e.value == "All") {
sh.showRows(1, 100)
}
}
}
推荐阅读
- regex - 与选择文件匹配的 Ant 模式不起作用
- swift - iOS App 与树莓派 BLE 通信
- python - 如何在 Django ManyToMany 关系中返回两个相关模型的字段?
- java - 无法解决依赖关系
- php - 为 mac 安装特定的 PHP 版本
- php - 为什么列值的 SUM 返回 1?
- vuejs2 - [Vue 警告]:未知的自定义元素:
- 您是否正确注册了组件?vue-社交分享 - android - 如何在窗口上设置 GOOGLE_APPLICATION_CREDENTIALS?
- python-3.x - Python3 中是否有一个函数可以将一行中的 3 个最小值复制到数据框中,用于 m 行?
- c++ - 如何将 chrono::time_point 格式化为字符串