GoogleSheets脚本获取登录用户以隐藏/显示列 [英] GoogleSheets Script get logged in user to hide/show columns

查看:195
本文介绍了GoogleSheets脚本获取登录用户以隐藏/显示列的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

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

  function onChoice (e){
var email =(Session.getEffectiveUser()。getEmail());
var sheet = e.source.getActiveSheet();
if(e.user()!=='email')return;
switch(e.value){
case'HISlegit@email.com':
sheet.showColumns(1,sheet.getMaxColumns() - 1)
break;
case'HERlegit@email.com':
sheet.showColumns(5,2)
sheet.hideColumns(7,6)
break;
case'MINElegit@email.com':
sheet.showColumns(7,6)
sheet.hideColumns(5,2)
break;


$ / code $ / pre

解决方案

,这是一个非常简单的调整,它可以完成你所描述的任务,但是我不会因为'点击和图像'而陷入混乱,你必须找到它如何与你现有的代码一起工作。

以下内容将根据您的电子邮件打开/关闭列使用简单的'onOpen'触发器

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

switch(email){
case'HISlegit@email.com':
sheet.showColumns(1,sheet.getMaxColumns() - 1);
sheet.hideColumns(5,2);
休息;
case'HERlegit@email.com':
sheet.showColumns(5,2);
sheet.hideColumns(7,6);
休息;
case'MINElegit@email.com':
sheet.showColumns(7,6);
sheet.hideColumns(5,2);
休息;
};
}

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

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

Obviously I am clueless at scripting. Just trying to fire a manual script by the sheet's current user - obtains their Goggle User Email and then will hide or show certain columns. I am lost and have no idea what I am doing, as you can tell. Any help would be so very appreciated. Firing script manually by logged in user via script embedded image on Sheet that is clicked after opening sheet.

function onChoice(e){
var email = (Session.getEffectiveUser().getEmail());
var sheet = e.source.getActiveSheet();
if (e.user() !== 'email') return;
switch (e.value) {
          case 'HISlegit@email.com':
            sheet.showColumns(1, sheet.getMaxColumns() - 1)
            break;
          case 'HERlegit@email.com':
            sheet.showColumns(5, 2)
                sheet.hideColumns(7, 6)
            break;
          case 'MINElegit@email.com':
            sheet.showColumns(7, 6)
            sheet.hideColumns(5, 2)
            break;
}
}

解决方案

So, here's a very simple adjustment that does what you describe, but I wasn't going to mess about with the 'Clicking and image' thing, you'll have to find how it's going to work with your existing code.

The following will open/close columns based on your email using a simple 'onOpen' trigger:

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

  switch (email){
      case 'HISlegit@email.com':
            sheet.showColumns(1, sheet.getMaxColumns() - 1);
            sheet.hideColumns(5, 2);
            break;  
      case 'HERlegit@email.com':
            sheet.showColumns(5, 2);
            sheet.hideColumns(7, 6);
            break;
      case 'MINElegit@email.com':
            sheet.showColumns(7, 6);
            sheet.hideColumns(5, 2);
            break;
  };
}

It currently works for me. The issues you were having were centered around the 'if (e.user() !== 'email') return;' as I expected, but I've not tested anything related to 'var sheet = e.source.getActiveSheet();' as I'm not sure what data is being passed in via 'e; (I don't believe 'onChoice' is a Google Trigger).

This should resolve the code issue you're having.

这篇关于GoogleSheets脚本获取登录用户以隐藏/显示列的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆