难倒了。需要帮助将两个脚本应用于具有多个工作表的单个 Google 工作表文档
Stumped. In need of help to apply two scripts to a single Google Sheets doc that has multiple sheets
我对脚本编写还很陌生,搜索过你们庞大的论坛,但就是无法回答我自己的问题。我能够在单独的文件中找到适用于每个 sheet 的脚本,但是我可以将 2 个脚本应用于单个文件,但分别应用于 2 个 sheet 吗?基本上我所追求的是:
我是一名飞行员,我在 Google Sheets 文件中记录我的航海日志和飞行时间。我多年来一直使用这种方法,但最近尝试应用一些脚本来获取 A 列中的第一个空单元格,因为这是我从每个条目的日期开始的地方。主要原因是我的 sheet 现在超过 3000 行条目。我记录航班的文件中的第一个 sheet 标题为“LOGBOOK”。我找到了一个应用 onOpen 的脚本,它会在我每次打开时将光标置于 A 列的第一个空行。下面是我使用的脚本。它可以工作,但需要大约 10 秒才能完成。如果有更快的方法,我愿意接受建议。我只想知道A列的第一个空单元格。这是我目前使用的:
function onOpen() {
var sheet = SpreadsheetApp.getActiveSheet();
var values = sheet.getRange("A:A").getValues();
var maxIndex = values.reduce(function(maxIndex, row, index) {
return row[0] === "" ? maxIndex : index;
}, 0);
sheet.setActiveRange(sheet.getRange(maxIndex + 2, 1));
}
Screen shot of Sheet 1, "LOGBOOK"
此文件中的第二个 sheet 标题为“FLIGHT DUTY” 在这个 sheet 中,我希望在打开时发生相同的功能。我也希望将光标放置在 A 列的第一个空单元格中。同样,我在 A 列开始时输入了给定飞行值勤期的日期。如果我将这个 sheet 分解为 Google Sheet 文件,这个脚本有效:
function onOpen(){
var sheet = SpreadsheetApp.getActiveSheet();
//Find the last cell with data in that specific column (A in this case)
var lastCell = sheet.getRange("A1").getNextDataCell(SpreadsheetApp.Direction.DOWN);
//Activate the next cell
lastCell.offset(1, 0).activate();
}
Screen shot of sheet 2 "Flight Duty"
如果比我知识渊博的人可以提供帮助,我将不胜感激。在我当前的 Google Sheets 文件中,我希望 Sheet 1 "LOGBOOK" 到 onOpen,将光标放在 A 列的第一个空单元格上。同时,onOpen,我想要 Sheet 2 "FLIGHT DUTY" 当我 select 那个选项卡时,将我的光标放在那个 sheet 的 A 列的第一个空单元格中。
下面是底部 SHEET 名称的屏幕截图。我唯一需要脚本的 sheet 是 1 个航海日志和 2 个飞行任务。
Screen shot of Sheet Names
非常感谢!
尝试...
function onOpen(event){
var sh = event.source.getActiveSheet();
sh.getRange('A'+getFirstEmptyDataRow(sh)).offset(1,0).activate();
}
function onSelectionChange(event){
var sh = event.source.getActiveSheet();
sh.getRange('A'+getFirstEmptyDataRow(sh)).offset(1,0).activate();
}
function getFirstEmptyDataRow(sheet) {
var range = sheet.getRange("A4");
return range.getNextDataCell(SpreadsheetApp.Direction.DOWN).getRow();
}
https://docs.google.com/spreadsheets/d/1Um9gnfz3VH6Vf0PwNVW8LOD3F63qb5h7PQl-hSYT_0E/copy
我测试了下面的代码。最后一行将在您拥有的 sheet 秒内激活。无论您打开哪个 sheet,您将始终落在最后一行。 运行.
需要一秒钟
function onOpen() {
var ss = SpreadsheetApp.getActive();
var tabs= ss.getSheets();
for (i=0; i<tabs.length;i++){
var lr = tabs[i].getLastRow();
tabs[i].getRange("A"+(lr+1)).activate();
}
}
这是一个更稳定的版本
function onOpen(){
var ui = SpreadsheetApp.getUi();
ui.createMenu('↓ Go to ... ↓')
.addItem('first empty row', 'goToFirstEmptyRow')
.addToUi();
var sh = event.source.getActiveSheet();
sh.getRange('A'+getFirstEmptyDataRow(sh)).offset(1,0).activate();
}
function goToFirstEmptyRow(event){
var sh = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet()
sh.getRange('A'+getFirstEmptyDataRow(sh)).offset(1,0).activate();
}
function getFirstEmptyDataRow(sheet) {
var range = sheet.getRange("A4");
return range.getNextDataCell(SpreadsheetApp.Direction.DOWN).getRow();
}
右上角有一个菜单
我对脚本编写还很陌生,搜索过你们庞大的论坛,但就是无法回答我自己的问题。我能够在单独的文件中找到适用于每个 sheet 的脚本,但是我可以将 2 个脚本应用于单个文件,但分别应用于 2 个 sheet 吗?基本上我所追求的是:
我是一名飞行员,我在 Google Sheets 文件中记录我的航海日志和飞行时间。我多年来一直使用这种方法,但最近尝试应用一些脚本来获取 A 列中的第一个空单元格,因为这是我从每个条目的日期开始的地方。主要原因是我的 sheet 现在超过 3000 行条目。我记录航班的文件中的第一个 sheet 标题为“LOGBOOK”。我找到了一个应用 onOpen 的脚本,它会在我每次打开时将光标置于 A 列的第一个空行。下面是我使用的脚本。它可以工作,但需要大约 10 秒才能完成。如果有更快的方法,我愿意接受建议。我只想知道A列的第一个空单元格。这是我目前使用的:
function onOpen() {
var sheet = SpreadsheetApp.getActiveSheet();
var values = sheet.getRange("A:A").getValues();
var maxIndex = values.reduce(function(maxIndex, row, index) {
return row[0] === "" ? maxIndex : index;
}, 0);
sheet.setActiveRange(sheet.getRange(maxIndex + 2, 1));
}
Screen shot of Sheet 1, "LOGBOOK"
此文件中的第二个 sheet 标题为“FLIGHT DUTY” 在这个 sheet 中,我希望在打开时发生相同的功能。我也希望将光标放置在 A 列的第一个空单元格中。同样,我在 A 列开始时输入了给定飞行值勤期的日期。如果我将这个 sheet 分解为 Google Sheet 文件,这个脚本有效:
function onOpen(){
var sheet = SpreadsheetApp.getActiveSheet();
//Find the last cell with data in that specific column (A in this case)
var lastCell = sheet.getRange("A1").getNextDataCell(SpreadsheetApp.Direction.DOWN);
//Activate the next cell
lastCell.offset(1, 0).activate();
}
Screen shot of sheet 2 "Flight Duty"
如果比我知识渊博的人可以提供帮助,我将不胜感激。在我当前的 Google Sheets 文件中,我希望 Sheet 1 "LOGBOOK" 到 onOpen,将光标放在 A 列的第一个空单元格上。同时,onOpen,我想要 Sheet 2 "FLIGHT DUTY" 当我 select 那个选项卡时,将我的光标放在那个 sheet 的 A 列的第一个空单元格中。
下面是底部 SHEET 名称的屏幕截图。我唯一需要脚本的 sheet 是 1 个航海日志和 2 个飞行任务。
Screen shot of Sheet Names
非常感谢!
尝试...
function onOpen(event){
var sh = event.source.getActiveSheet();
sh.getRange('A'+getFirstEmptyDataRow(sh)).offset(1,0).activate();
}
function onSelectionChange(event){
var sh = event.source.getActiveSheet();
sh.getRange('A'+getFirstEmptyDataRow(sh)).offset(1,0).activate();
}
function getFirstEmptyDataRow(sheet) {
var range = sheet.getRange("A4");
return range.getNextDataCell(SpreadsheetApp.Direction.DOWN).getRow();
}
https://docs.google.com/spreadsheets/d/1Um9gnfz3VH6Vf0PwNVW8LOD3F63qb5h7PQl-hSYT_0E/copy
我测试了下面的代码。最后一行将在您拥有的 sheet 秒内激活。无论您打开哪个 sheet,您将始终落在最后一行。 运行.
需要一秒钟function onOpen() {
var ss = SpreadsheetApp.getActive();
var tabs= ss.getSheets();
for (i=0; i<tabs.length;i++){
var lr = tabs[i].getLastRow();
tabs[i].getRange("A"+(lr+1)).activate();
}
}
这是一个更稳定的版本
function onOpen(){
var ui = SpreadsheetApp.getUi();
ui.createMenu('↓ Go to ... ↓')
.addItem('first empty row', 'goToFirstEmptyRow')
.addToUi();
var sh = event.source.getActiveSheet();
sh.getRange('A'+getFirstEmptyDataRow(sh)).offset(1,0).activate();
}
function goToFirstEmptyRow(event){
var sh = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet()
sh.getRange('A'+getFirstEmptyDataRow(sh)).offset(1,0).activate();
}
function getFirstEmptyDataRow(sheet) {
var range = sheet.getRange("A4");
return range.getNextDataCell(SpreadsheetApp.Direction.DOWN).getRow();
}
右上角有一个菜单