Google 脚本可跨多个工作表工作

2024-03-10

我是 Google 脚本的新手,所以如果这个问题已经得到解答,我深表歉意。

我有一个包含多个工作表的电子表格,其中一些工作表上有一个状态列。

使用我已经发现的代码,我可以根据状态列中单元格中的值设置整个行颜色。

我遇到的问题是我只能让代码在一张纸上运行。

以下代码(由 ScampMichael 编写)的工作方式与我想要根据“状态”列中的值更新整行一样,但我无法让它在同一工作簿中的多个工作表(具有不同名称)上工作。

我已尝试将代码作为单独的脚本,并编辑工作表名称和列号,以便每个工作表都引用一个单独的工作表,但仍然只更新一张工作表。

请有人告诉我如何编辑此代码或如何复制它以便跨多个工作表工作?

function onEdit(e) {

  var statusCol = 2; // replace with the column index of Status column A=1,B=2,etc

  var sheetName = "Services"; // replace with actual name of sheet containing Status

  var cell = e.source.getActiveCell();
  var sheet = cell.getSheet();
  if(cell.getColumnIndex() != statusCol || sheet.getName() != sheetName) return;

  var row = cell.getRowIndex();
  var status = cell.getValue();

  // change colors to meet your needs
  var color;
  switch(status ) {
    case "Down":
      color = "red";
      break;
    case "":
      color = "White";
      break;
    case "Up":
      color = "green";
      break;
  }
  sheet.getRange(row + ":" + row ).setBackgroundColor(color);
}

谢谢。


电子表格只能有一个 onEdit() 函数。因此,对任何工作表所做的编辑都必须在同一函数中处理。

一种方法是不对 statusCol 的值进行硬编码,而是在运行时获取它。 在许多可能的方法中,我将在这里给出两种

更简单的方法

var statusCols = { 'Sheet1' : 1,
                   'Sheet2' : 2,
                   'Sheet3' : 7  //etc.
                 };


function onEdit(e){
  var cell = e.source.getActiveCell();
  var sheet = cell.getSheet();

  var sheetName = sheet.getName(); 
  var statusCol = statusCols[sheetName];

  /* Whatever code you already have */
}

第二种方法更加通用

function onEdit(e){   
  var cell = e.source.getActiveCell();   
  var sheet = cell.getSheet();
  var headers= sheet.getDataRange().getValues()[0]; //Assuming headers on the first row only   
  var statusCol = headers.indexOf('Status') + 1 ; // Replace Status by the actual column header 
  /* Your existing code here */
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Google 脚本可跨多个工作表工作 的相关文章

随机推荐

  • 在javascript中将一个对象转换为多个对象[关闭]

    Closed 这个问题需要细节或清晰度 help closed questions 目前不接受答案 我想在 JavaScript 中将一个对象转换为多个对象 这是我的对象 const obj jQuery sts create form s
  • Umbraco:列出用户控件中的子节点

    我有一个用户控件 需要根据parentID 返回子节点 我能够获取parentID 但不知道返回子节点的语法 获取子节点非常简单 不确定您的代码有多远 所以这里是一个包含各种选项的完整示例 using umbraco presentatio
  • 链接多个共享库,这些共享库全部链接到一个公共静态库

    假设您有 2 个共享库 lib1 so 和 lib2 so 它们都静态链接了 libcommon a 如果要动态链接 lib1 so 和 lib2 so 编译器会抱怨符号引用不明确吗 或者编译器是否足够聪明 知道 libcommon 符号在
  • 存储过程、MySQL 和 PHP

    这是一个相当开放的问题 我已经在 MS SQLServer 中使用存储过程以及经典 ASP 和 ASP net 一段时间了 并且非常喜欢它们 我正在从事一个小型爱好项目 由于各种原因 我选择了 LAMP 路线 有什么提示 技巧 陷阱或良好的
  • 例如,C++0x auto 关键字的含义是什么?

    auto a Foo
  • 将320x240x3点云矩阵转换为320x240x1深度图

    有人可以用Python帮我解决以下问题吗 我有从虚拟相机获得的点云矩阵 其尺寸为 320x240x3 表示每个点 相机视图中的点 的 x y z 坐标 所有值的范围都从负到正 如何将此点云矩阵转换为存储每个像素的正深度值的 320x240x
  • 在 Swift 3 中使用选择器

    我正在用 Swift 3 编写我的 iOS 应用程序 我有一个UIViewController扩展 我必须检查控制器实例是否响应方法 下面是我尝试的代码 extension UIViewController func myMethod if
  • 如何使用 WorkManager 更改定期工作请求周期而不立即运行?

    val request PeriodicWorkRequestBuilder
  • 使用R的lm(),公式对象应该作为字符传递?

    我发现 R 使用 lm 时有一个奇怪的行为 基于cars对象 以下函数是在速度 30 时使用局部线性回归绘制拟合断裂距离 func1 lt function fm spd w lt dnorm cars speed spd sd 5 fit
  • Jenkins 与 intellij 共享库

    我开始实现 Jenkins 共享库并尝试使用 intellij 作为我的 ide 编写我的 jenkinsfile 如何从共享 lib 存储库获取函数到其中包含 jenkins 文件的其他存储库 只是为了澄清从 jenkins 运行时对我有
  • 查找数组的第一个重复项

    我决定学习 python 并使用 CodeFight 进行训练 第一个面试练习是找到数组的第一个重复项并返回它 如果没有则返回 1 这是我写的代码 def firstDuplicate a b print len a for i in ra
  • 当两个命令都存在时,在 jupyter 中使用“%”比使用“!”有优势吗?

    例如当我使用 pip install VSCode 建议我使用 pip install 同样有一个版本mv对彼此而言 and 使用其中一种比另一种有优势吗 Yes pip在大多数边缘情况下 将正确解析适当的虚拟环境 当前内核使用的虚拟环境
  • 如何在 Spring WebClient 中一次设置多个标头?

    我试图为我的其余客户端设置标头 但每次我都必须写 webclient get uri blah blah header key1 value1 header key2 value2 如何使用 headers 方法同时设置所有标头 如果这些标
  • Cloudinary api - 解决承诺

    我想编写一个函数 返回一个布尔值 指示我的 Cloudinary 空间中是否已存在具有指定 public id 的图像 我可以使用以下代码将结果记录到控制台 function isUploaded public id cloudinary
  • 不可能的布局?

    我开始认为这是不可能的 但我想我会问你们 基本上它是一个 2 列布局 但 业务 需要以下内容 始终占据整个浏览器窗口 适应浏览器窗口大小的调整 左栏的宽度是固定的 但该宽度在不同页面上应该是灵活的 左列顶部有一个固定高度的区域 左栏有一个底
  • 所有 mysql 引擎之间的主要区别是什么?

    我想总结一下所有 Mysql 引擎之间的主要区别 当然也包括最流行的引擎 我应该使用什么标准来确定使用哪个引擎 这里对它们进行了很好的描述 http dev mysql com doc refman 5 0 en storage engin
  • 如何更改 tcsh 提示符以显示当前工作目录?

    我在用tcsh我正在寻找一种响应式工作目录 我至少想显示最后一个文件夹名称而不是获取完整路径 想象我当前的工作目录是 user hostname home us Desktop my projects 然后我想显示这样的提示 user ho
  • 获取 Librosa 中与 STFT 相关的频率

    使用时librosa stft 要计算频谱图 如何获取相关的频率值 我对生成图像不感兴趣 如librosa display specshow 而是我希望掌握这些价值观 y sr librosa load recordings high pi
  • Azure 媒体播放器无法在 iPhone 上使用 AES 保护

    我们在 iPhone 6 A1586 上播放受 AES 使用 JWT 令牌身份验证 保护的视频时遇到问题 欠费错误如下 0x50300000 视频播放因损坏问题而中止 或者因为视频使用了您的浏览器不支持的功能 禁用加密后 播放相同的视频不会
  • Google 脚本可跨多个工作表工作

    我是 Google 脚本的新手 所以如果这个问题已经得到解答 我深表歉意 我有一个包含多个工作表的电子表格 其中一些工作表上有一个状态列 使用我已经发现的代码 我可以根据状态列中单元格中的值设置整个行颜色 我遇到的问题是我只能让代码在一张纸