javascript - 无法聚焦 onOpen 触发器中的单元格

标签 javascript google-apps-script google-sheets google-apps google-sheets-api

我在电子表格的脚本编辑器中编写了一个函数,该函数旨在关注包含当前日期的单元格。一般来说,当函数由菜单项触发时它会起作用,但加载电子表格后它不会聚焦在任何单元格上。

function onOpen() {
  var spreadsheet = SpreadsheetApp.getActiveSpreadsheet();
  var entries = [{
    name : "Go to Today",
    functionName : "goToToday" // goToToday() contains same code as last 3 lines of onOpen()
  }];
  spreadsheet.addMenu("Script", entries); // works on manual run and on startup

  var s = spreadsheet.getSheetByName("Sheet1");    
  var r = 25 + s.getRange("I4").getValue();
  s.setActiveSelection(s.getRange("A" + r )); // works on manual run, doesn't work on startup


};

最佳答案

根据 Bryan 的回答,我尝试了另一种可能的代码来自动关闭对话框。

我调用 UiApp 弹出窗口的方式有一些细微的变化。

function onOpen() {
  var s = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("Sheet1");    
  var ui = SpreadsheetApp.getUi(); 
  ui.createMenu('Goto today').addItem('go !','goToToday').addToUi();
  var app = UiApp.createApplication().setHeight(40).setWidth(180).setTitle('Start');
  var btn = app.createButton('Go to Today in cell A'+(25 + (s.getRange("I4").getValue())), app.createServerHandler("goToToday"))
  .setStyleAttributes({'fontFamily':'arial','fontSize':'10pt','fontWeight':'bold','color':'white','background':'#3870ff'}).setPixelSize(175,35);
  app.add(btn);
  SpreadsheetApp.getActive().show(app);
}


function goToToday() {
  var s = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("Sheet1");    
  var r = 25 + s.getRange("I4").getValue();
  s.setActiveSelection(s.getRange("A" + r ));
  return UiApp.getActiveApplication().close();
}

enter image description here

关于javascript - 无法聚焦 onOpen 触发器中的单元格,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25472124/

相关文章:

javascript - 如何使用 Vue2 一起管理 v-bind 和 v-on?

javascript - 如何识别在元素上初始化的 Chosen 插件

javascript - 将 JSON 对象分配给来自 Google Sheets URL 的变量?

excel - 如果 Google Sheets 或 MS Excel 中的值为负数,如何在数字前加上加号 "+"?

google-apps-script - 谷歌应用程序脚本 : What is the correct way to check if I have access to a Google Spreadsheet by URL

javascript - 如何检查至少一个复选框被选中

javascript - 使用带 Angular REST api 访问共享点列表给出 403

google-apps-script - 强制重新授权 Google 附加组件的范围

google-apps-script - Google 脚本 - 设置 VAxis 最小值和最大值的问题

python - 请确认 : SignedJwtAssertionCredentials only works with SpreadsheetsClient, 不是 SpreadsheetsService?