【问题标题】:How to go directly to a certain sheet when you open a google spreadsheet?打开谷歌电子表格时如何直接转到某个工作表?
【发布时间】:2016-09-29 22:18:07
【问题描述】:

我希望我的电子表格在某个工作表中打开。我已经尝试了以下方法,但它仍然只是打开第一张纸。

function setActiveSheetToday(){
    var date = new Date();
    var sheet = getSheetByDate(date); //custom function that returns sheet object
    var SS = sheet.getParent();
    SS.setActiveSheet(sheet);
}

然后我创建一个onOpen 触发器。

ScriptApp.newTrigger('setActiveSheetToday').forSpreadsheet(SS_ID).onOpen().create();

当我打开电子表格时,它仍会在第一张工作表处打开。有什么建议吗?

编辑

我想我找到了它在这里不起作用的原因:https://developers.google.com/apps-script/guides/bound#special_methods

所以它显然只适用于有界脚本..

【问题讨论】:

  • 没有名为getSheetByDate()的方法

标签: google-apps-script google-sheets google-apps


【解决方案1】:

您可以将要打开的工作表放在第一张工作表上。只需将SS.moveActiveSheet(1); 添加到您的setActiveSheetToday() 函数即可。

或者,从绑定脚本激活工作表可以根据需要更改焦点。从单独的脚本文件中执行此操作似乎没有。

【讨论】:

  • 将工作表移到第一位在我的项目中并不是一个真正可行的选择。有没有办法用代码将脚本绑定到电子表格?否则我必须手动将脚本添加到每个电子表格中。
  • 如果您正在复制带有绑定脚本的电子表格,那么绑定脚本将随之复制,但我不确定是否可以从其他地方运行的脚本中更改它。这会有点笨拙,但您可能有一个带有onOpen() 函数的电子表格,该函数激活在隐藏工作表中命名的工作表,然后在该电子表格的副本上构建您正在制作的任何内容,并写下工作表的名称打开到相关的地方。不过,将工作表移到前面会容易得多 - 工作表顺序会影响您不想这样做吗?
【解决方案2】:

你检查过对象,你的床单吗?

你可以试试这个功能进行简单的测试:

function onOpen() {
  var ss = SpreadsheetApp.getActiveSpreadsheet();
  var sheet = ss.getSheetByName('Sheet1');
  ss.setActiveSheet(sheet);
}

制作名为“Sheet1”的工作表,转到任何其他工作表并重新加载页面。

对于您的代码,我建议进行测试:

Logger.log(sheet.getName());

【讨论】:

  • 函数getSheetByDate() 有效,这不是问题所在。我认为您假设我使用的是与电子表格耦合的脚本,但事实并非如此,我使用的是独立的脚本文件。这就是我使用forSpreadsheet(SS_ID).onOpen()的原因。
猜你喜欢
  • 2012-12-30
  • 2015-08-16
  • 1970-01-01
  • 2020-07-20
  • 1970-01-01
  • 1970-01-01
  • 2023-03-22
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多