打开Goog​​le电子表格,将光标放在最后一个工作单元格上

时间:2015-03-06 02:07:36

标签: google-sheets

我希望当我打开任何谷歌电子表格时,光标会被踩到最后一个工作单元格(记住最后一个位置)。这可能吗?

谢谢

2 个答案:

答案 0 :(得分:5)

这可以更简洁地编写,但这是最简单的想法,在每次编辑时保存行和单元格属性,然后将它们设置为打开。访问Properties Service页面,获取有关哪些用户可以访问这些属性的更多信息。

这将返回编辑的最后一个单元格,而不是光标所在的最后一个单元格。

function onEdit(e) {

  var ss = e.source
  var sheet = ss.getActiveSheet();
  var cell = ss.getActiveCell();
  var row = cell.getRow();
  var column = cell.getColumn();
  var sheet_name = sheet.getSheetName();
  var scriptProperties = PropertiesService.getScriptProperties();  

  scriptProperties.setProperty('row',row);
  scriptProperties.setProperty('column',column);
  scriptProperties.setProperty('sheet name',sheet_name);
}

function onOpen(e) {

  var properties = PropertiesService.getScriptProperties();

  var ss = e.source;
  var sheet_name = properties.getProperty('sheet name');
  var sheet = ss.getSheetByName(sheet_name);
  var row = properties.getProperty('row');
  var column = properties.getProperty('column');
  var cell = sheet.getRange(row,column);

  ss.setActiveSheet(sheet);
  ss.setActiveRange(cell);  
}  

答案 1 :(得分:0)

对于那些想记住Google文档中最后一个光标位置的人,这是一种实现方法。

// record current cursor position
function onCursorMove() {
  var doc = DocumentApp.getActiveDocument();
  var body = doc.getBody();
  var properties = PropertiesService.getScriptProperties();

  // temporary string for indicating cursor position
  var tempHinter = "3289asp"; // a random string
  DocumentApp.getActiveDocument().getCursor().insertText(tempHinter);
  var text = body.getText();
  var index = text.search(new RegExp(tempHinter, "g"));
  // delete temp string
  body.editAsText().deleteText(index, index + tempHinter.length - 1); // end offset is inclusive
  // store current cursor position as a script property
  properties.setProperty("position", index);
}

// set current cursor to last-stored position in script properties
function onOpen() {
  var properties = PropertiesService.getScriptProperties();
  var doc = DocumentApp.getActiveDocument();
  var body = doc.getBody();
  var text = body.editAsText();

  // get the cursor position stored by onCursorMove()
  var position = properties.getProperty("position");
  if (position !== null){
    // set cursor to last-stored position
    doc.setCursor(doc.newPosition(text, position));
  }
} 

说明:

  1. onCursoveMove():在文档正文中记录当前光标的位置,并将整数位置存储在脚本属性中,以便在关闭并重新打开文档后进行访问。 DocumentApp.getActiveDocument().getCursor()函数返回一个Position对象,以表示光标的位置。但是,由于Position使用元素和偏移量来定位光标,因此很难将元素存储在脚本属性中(JSON.stringify不适用于Element接口,因为它太复杂了)。为了保存光标位置,我在文档正文的文本中存储了一个索引。

  2. onOpen:使用setCursor函数将当前光标重置到最后存储的位置

注意:截至2019年1月,应用程序脚本没有onClose()onExit()触发器,因此必须定期调用onCursorMove()来更新当前脚本。光标位置。而且由于应用程序脚本不支持异步处理,因此您可以考虑使用HTMLServiceTriggerBuilder或其他技术来规避。另外,当前执行时间限制为6分钟。