2014-11-13 24 views
1

显然,我对脚本毫无头绪。只是尝试通过工作表当前用户启动手动脚本 - 获取其Goggle用户电子邮件,然后将隐藏或显示某些列。正如你所看到的,我迷路了,不知道我在做什么。任何帮助将非常感激。 通过登录用户通过脚本嵌入图像在打开表单后单击的表单上手动触发脚本。GoogleSheets脚本获取登录用户隐藏/显示列

function onChoice(e){ 
var email = (Session.getEffectiveUser().getEmail()); 
var sheet = e.source.getActiveSheet(); 
if (e.user() !== 'email') return; 
switch (e.value) { 
      case '[email protected]': 
      sheet.showColumns(1, sheet.getMaxColumns() - 1) 
      break; 
      case '[email protected]': 
      sheet.showColumns(5, 2) 
       sheet.hideColumns(7, 6) 
      break; 
      case 'MINE[email protected]': 
      sheet.showColumns(7, 6) 
      sheet.hideColumns(5, 2) 
      break; 
} 
} 
+0

只要看看它,问题的根源可能在'if(e.user()!=='email')return;'因为这似乎没有被正确格式化。尝试删除一开始,看看是否让你在任何地方。否则,当我回家并且不在手机上时,我会仔细观察。 – HDCerberus

回答

3

所以,这是一个非常简单的调整,做你的描述,但我没有用“点击和形象”的事情要做手脚,你必须找到它是怎么回事一起工作您现有的代码。

下面将根据您的电子邮件using a simple 'onOpen' trigger打开/关闭列:

function onOpen(e){ 
    var email = (Session.getEffectiveUser().getEmail()); 
    var sheet = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet(); 

    switch (email){ 
     case '[email protected]': 
      sheet.showColumns(1, sheet.getMaxColumns() - 1); 
      sheet.hideColumns(5, 2); 
      break; 
     case '[email protected]': 
      sheet.showColumns(5, 2); 
      sheet.hideColumns(7, 6); 
      break; 
     case '[email protected]': 
      sheet.showColumns(7, 6); 
      sheet.hideColumns(5, 2); 
      break; 
    }; 
} 

目前,它为我工作。你遇到的问题集中在'if(e.user()!''email')return;'正如我所料,但我没有测试任何与'var sheet = e.source.getActiveSheet();'相关的东西因为我不确定哪些数据通过'e; (我不相信'onChoice'是Google触发器)。

这应该可以解决您遇到的代码问题。