在Google脚本/工作表

时间:2017-01-02 15:26:29

标签: 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)
}

NO 3。

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)
}

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

  1. 只需添加全部3
  2. 添加所有3个不同的功能名称
  3. 在同一代码(函数)中添加多个ifs(不确定它是否已正确完成,但因为它不起作用)

2 个答案:

答案 0 :(得分:2)

你也可以合并'将三个脚本合二为一。试试这样的事情

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])
}

看看是否有效?

答案 1 :(得分:0)

关于1和2

  
      
  1. 只需添加全部3
  2.   

这不起作用,因为这些函数使用相同的名称。只会运行最后一个。

  
      
  1. 添加所有3个不同的功能名称   这可能有效,但是由简单的编辑触发器触发,它们需要由名为onEdit(e)的函数调用。实施例
  2.   
function onEdit(e){
  myFunction1();
  myFunction2();
  myFunction3();
}