google-apps-script - Google表格中的重复表格留下了自定义脚本
问题描述
我最近在 Google 表格的脚本编辑器中添加了一个脚本,以根据 D 列中的值对我的页面进行自动排序。它被设置为应用于活动工作表——我们称之为“工作表 A”
使用工作表 A 以便人们可以按降序查看数据排序,这很棒。每次对工作表 A 进行更改/编辑时,数据都会自动恢复。
我在工作表 A 中做了很多单元格合并、样式设置、条件格式等,我不想重新创建它。所以我复制了工作表 A——我们称之为“工作表 B”并应用数据 > 按字母顺序排序范围(E 列是名称),这样人们就可以选择以这种方式查看,并且发现自己比工作表 A 快得多。
问题: 我在工作表 A 中添加的自定义脚本正在被转移到工作表 B 中——所以每当我进行编辑时,工作表 B 会按照 D 列中的值的降序自动排序。
是否可以复制我的工作表 A 但不能将脚本保留在副本中(工作表 B)?或者有没有更好的方法将工作表 A 迁移到工作表 B,而忽略所有附带的脚本?
解决方案
没有简单的方法可以复制没有链接文件的电子表格,无论是表单还是有界脚本。
在您的电子表格包含简单触发器的情况下,最简单的解决方案可能是包含一个条件来检查活动电子表格的 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
}
有关的
推荐阅读
- javascript - 使用 Webpack Encore 在 Angular 数据表中找不到数据表
- spring - spring mvc:自定义查询的 jpa 存储库错误
- php - Envoyer mkdir 问题
- xaml - ListView 仅适用于 Android 错误
- python - Python:使用 write() 函数输出三个变量
- sql - 如何在一个查询中从两个表中查找缺失的记录?
- node.js - 使用 nodered 从 dynamodb 收集数据
- javascript - 提交错误后记住单选选项
- python - 根据条件执行矩阵乘积的最佳方法
- ruby - 将 selenium - rubygems 测试添加到 azure dev-ops 管道