google-apps-script - Google Script Trigger Collapse Group 问题
问题描述
我有时间触发器的问题。我希望工作表中的组每 30 分钟折叠一次。我记录宏并在脚本编辑器中设置触发器。
这是我的代码:
function zwin() {
var spreadsheet = SpreadsheetApp.getActive();
spreadsheet.getRange('A:H').activate();
spreadsheet.getActiveSheet().getColumnGroup(9, 1).collapse();
};
我设置了时间触发器(每 1 分钟检查一次是否有效),并不断遇到这个问题:
例外:不存在索引为 9 且组深度为 1 的列组
如您所见,组索引是正确的:https ://i.stack.imgur.com/VS9kG.png
但是当我尝试手动运行脚本时,它可以完美运行。它折叠了我创建的组。我在每张包含我创建的组的工作表中不断遇到这个问题,唯一的区别是组索引(我在代码中更改了添加到它的位置)。
我试图删除该组并再次创建它,更改代码中的范围 - 没有任何效果。
我做错了什么以及如何使它起作用?
[编辑] 我所要做的就是手动定义我想要触发脚本的电子表格。添加代码:
function zwin() {
var spreadsheet = SpreadsheetApp.openById("myspreadsheetid");
spreadsheet.getSheetByName("thesheetname").getColumnGroup(9, 1).collapse();
};
但我收到这条消息是因为我只是拼错了 id:
获取对象 SpreadsheetApp 上的方法或属性 openById 时出现意外错误
确保您没有拼错可以在此处找到的 id:
id 是https://docs.google.com/spreadsheets/d/XXX/edit#gid=0中的 xxx 部分
openByUrl 也可以:
function zwin() {
var spreadsheet = SpreadsheetApp.openByUrl("myspreadsheeturl");
spreadsheet.getSheetByName("thesheetname").getColumnGroup(9, 1).collapse();
};
它有效!
解决方案
在基于时间的触发器上运行函数时,没有活动的电子表格
- 基于时间的触发器独立于电子表格运行
- 它也会在电子表格关闭时运行(因此没有活动的电子表格)
- 因此,您需要手动定义要在哪个电子表格和工作表上运行触发器
- 您可以通过例如通过其 id 调用电子表格和通过其名称调用工作表来做到这一点
样本:
function zwin() {
var spreadsheet = SpreadsheetApp.openById("YOUR-SHEET-ID");
spreadsheet.getSheetByName("NAME_OF_THE_SHEET").getColumnGroup(9, 1).collapse();
};
推荐阅读
- sql - 列值在输出中重复
- linux - Nginx: curl: (60) SSL证书问题:无法获取本地颁发者证书
- javascript - React.js Bootsrap 在执行“简单”任务时返回空错误
- django - DRF PointField 验证错误 - “输入有效位置”
- c# - 如果座位已经保留,C# Automatic Shows Button Disabled
- node.js - 对 localhost 的 POST 请求未在 NodeJS 中发送响应
- java - 在创建 Hibernate XML 映射文件时获取 java.lang.NullPointerException
- azure - 使用 Invocation Id 杀死正在运行的 azure 函数实例
- matlab - 更改 inputdlg 字段名称的颜色
- shibboleth - Shibboleth 4 IDP:使用密码流查询两个不同的登录源