首页 > 解决方案 > Google表格中的重复表格留下了自定义脚本

问题描述

我最近在 Google 表格的脚本编辑器中添加了一个脚本,以根据 D 列中的值对我的页面进行自动排序。它被设置为应用于活动工作表——我们称之为“工作表 A”

使用工作表 A 以便人们可以按降序查看数据排序,这很棒。每次对工作表 A 进行更改/编辑时,数据都会自动恢复。

我在工作表 A 中做了很多单元格合并、样式设置、条件格式等,我不想重新创建它。所以我复制了工作表 A——我们称之为“工作表 B”并应用数据 > 按字母顺序排序范围(E 列是名称),这样人们就可以选择以这种方式查看,并且发现自己比工作表 A 快得多。

问题: 我在工作表 A 中添加的自定义脚本正在被转移到工作表 B 中——所以每当我进行编辑时,工作表 B 会按照 D 列中的值的降序自动排序。

是否可以复制我的工作表 A 但不能将脚本保留在副本中(工作表 B)?或者有没有更好的方法将工作表 A 迁移到工作表 B,而忽略所有附带的脚本?

标签: google-apps-scriptgoogle-sheets

解决方案


没有简单的方法可以复制没有链接文件的电子表格,无论是表单还是有界脚本。

在您的电子表格包含简单触发器的情况下,最简单的解决方案可能是包含一个条件来检查活动电子表格的 id 是否等于“原始”电子表格的 id:

function onEdit(e){
  if( e.source.getId() !== 'put_here_the_id_of_the_original_spreadsheet') return;
  // put here the things to do
}

注意:有界脚本绑定到容器(在本例中为电子表格)而不是特定工作表(Google Docs 中的页面或 Google 幻灯片中的幻灯片),因此在复制一张工作表时留下脚本没有意义.

如果您希望某个函数仅对某个工作表进行更改,那么您应该添加一个条件以将活动工作表的名称与“原始”工作表的名称进行比较

function onEdit(e){
  // Get the active sheet
  var sheet = e.range.getSheet();
  var name = sheet.getName();
  if(name !== 'SheetA') return;
  // put here the things to do
}

有关的


推荐阅读