javascript - 在 google script/Sheet 中组合 3 个独立的 Onedit 函数

标签 javascript google-apps-script google-sheets

我正在寻求解决过去 2-3 小时一直在解决的问题,我认为这对许多人来说非常容易。我得到了以下功能,虽然有时有点慢,但效果很好。

function onEdit(e) {
var sheet = e.source.getActiveSheet()
if (sheet.getName() !== 'Team' || e.range.getA1Notation() !== 'D16') return; 
  e.range.offset(0, 0).getValue() === 'Show' ? sheet.showRows(17, 7) : sheet.hideRows(17, 7)

然而,我得到了两个几乎相同的功能,我需要同时运行。即

2号

function onEdit(e) {
var sheet = e.source.getActiveSheet()
if (sheet.getName() !== 'Team' || e.range.getA1Notation() !== 'D25') return; 
  e.range.offset(0, 0).getValue() === 'Show' ? sheet.showRows(26, 10) : sheet.hideRows(26, 10)
}

No3。

function onEdit(e) {
var sheet = e.source.getActiveSheet()
if (sheet.getName() !== 'Team' || e.range.getA1Notation() !== 'D37') return; 
  e.range.offset(0, 0).getValue() === 'Show' ? sheet.showRows(38, 10) : sheet.hideRows(38, 10)
}

我试图让所有三个单独工作:

  1. 简单地添加所有 3
  2. 使用不同的函数名称添加所有 3 个
  3. 在同一代码(函数)中添加多个 if(不确定是否正确完成,因为它不起作用)

最佳答案

您还可以将三个脚本“合并”为一个。尝试这样的事情

function onEdit(e) {
var sheet, cells, rows, ind;
sheet = e.source.getActiveSheet();
cells = ['D16', 'D25', 'D37'];
rows = [[17, 7], [26, 10], [38, 10]];
ind = cells.indexOf(e.range.getA1Notation());
if (sheet.getName() !== 'Team' || ind == -1) return;
e.value === 'Show' ? sheet.showRows(rows[ind][0], rows[ind][1]) : sheet.hideRows(rows[ind][0], rows[ind][1])
}

看看这是否有效?

关于javascript - 在 google script/Sheet 中组合 3 个独立的 Onedit 函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41429402/

相关文章:

javascript - 关闭当前标签

javascript - 如何在Vue中设置当前年份加上 future 5年的数组?

javascript - 将鼠标悬停在选项上时更改颜色

javascript - Google AppS 脚本 - 根据键合并数组

json - 是否有用于从一张表中读取行的 RESTful Google Sheets API?

pdf - 使用Google Apps脚本将所有工作表转换为PDF

javascript - 动态更改顶点位置后网格位置无效

google-apps-script - 如何将表单复制并移动到 Google Apps 脚本中的文件夹?

javascript - 有没有办法检查单元格内的单词?

if-statement - 数字范围之间的多个 IF 语句