typescript - 将相同的脚本代码循环到两个特定选项卡,打开最近编辑的选项卡
问题描述
我对脚本一无所知,到目前为止,我只是通过研究一段时间来获得我需要的特定代码。但我不认为我可以自己做到这一点,我需要帮助。
我尝试了可能适合我需要的不同代码,最后找到了这个脚本[t code/s:
function onOpen() {
// version 1.1, written by --Hyde 5 March 2020
// - add sheetName, dateColumn
// - use value.getTime to check that dateColumn contains dates
// - find today instead of tomorrow
// - use descriptive variable names
// - see https://support.google.com/docs/thread/32097728?msgid=32396362
// version 1.0, written by AD:AM 15 May 2019
// - initial version
// - see https://support.google.com/docs/thread/6074864?msgid=6156095
////////////////////////////////
// [START modifiable parameters]
var sheetName = 'sheetname';
var dateColumn = 2; // A = 1, B = 2, etc.
// [END modifiable parameters]
////////////////////////////////
var sheet = SpreadsheetApp.getActive().getSheetByName(sheetName);
var values = sheet.getDataRange().getValues();
var now = new Date();
var today = new Date(now.getFullYear(), now.getMonth(), now.getDate()).getTime();
for (var i = 0, length = values.length; i < length; i++) {
var value = values[i][dateColumn - 1];
if (value.getTime && value.getTime() >= today) {
sheet.getRange(i + 1, dateColumn).activate();
break;
}
}
}
我尝试复制该代码并将(工作表名称)重命名为具有该功能所需的 2 个选项卡,尽管它只能工作其中一个。我需要它为他们俩工作。这个脚本打开到当前日期,我希望它在两个选项卡上都可以工作,因为这两个选项卡分配了不同的用户。
这是我的工作表的副本,供您参考。
请帮我解决这个问题,因为我真的不太了解如何阅读代码,我只研究。
谢谢你
解决方案
每个文档不能使用多个onOpen()
触发器。由于代码中的逻辑已经适用于一张纸,因此您可以更改获取sheet
变量的方式,如下所示:
var sheet = SpreadsheetApp.getActive().getSheetByName(sheetName);
对此:
var sheet = SpreadsheetApp.getActiveSheet();
getActiveSheet()方法将检索当前正在打开或编辑的工作表。
除了触发器之外,您还需要在编辑工作表时使用onEdit()onOpen()
触发器来激活单元格。我测试了这段代码并成功运行:
function onOpen() {
activateLastDateCell();
}
function onEdit() {
activateLastDateCell();
}
function activateLastDateCell() {
// version 1.1, written by --Hyde 5 March 2020
// - add sheetName, dateColumn
// - use value.getTime to check that dateColumn contains dates
// - find today instead of tomorrow
// - use descriptive variable names
// - see https://support.google.com/docs/thread/32097728?msgid=32396362
// version 1.0, written by AD:AM 15 May 2019
// - initial version
// - see https://support.google.com/docs/thread/6074864?msgid=6156095
////////////////////////////////
// [START modifiable parameters]
//var sheetName = '(Ian) Hulog - Hulog 2020';
var dateColumn = 2; // A = 1, B = 2, etc.
// [END modifiable parameters]
////////////////////////////////
var sheet = SpreadsheetApp.getActiveSheet();
var values = sheet.getDataRange().getValues();
var now = new Date();
var today = new Date(now.getFullYear(), now.getMonth(), now.getDate()).getTime();
for (var i = 0, length = values.length; i < length; i++) {
var value = values[i][dateColumn - 1];
if (value.getTime && value.getTime() >= today) {
sheet.getRange(i + 1, dateColumn).activate();
break;
}
}
}
推荐阅读
- javascript - 从对象数组中删除重复项,但将一个属性保留为数组
- xmpp - Ejabberd MucSub:当成员发送出席信息不可用时,服务不响应
- android - Android 上的 AWS 自动生成的开发工具包 - 时钟偏差修复
- wpf - 水平方向对齐 WPF ListBox 中的项目
- r - 如何在 egttest 函数中使用表达式作为参数
- r - 当变量要靠近时如何消除变量(即接近 200 毫秒 -> 删除行)
- git - Gitlab - 禁用交互模式冲突解决
- if-statement - Google表格代码中的一个部分与另一个部分重叠
- arrays - 如何将 Row 中的单元格合并到 LIST 中的一个单元格中
- r - 在 process.capability 图中更改标题