我希望当我打开任何谷歌电子表格时,光标会被踩到最后一个工作单元格(记住最后一个位置)。这可能吗?
谢谢
答案 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));
}
}
onCursoveMove()
:在文档正文中记录当前光标的位置,并将整数位置存储在脚本属性中,以便在关闭并重新打开文档后进行访问。 DocumentApp.getActiveDocument().getCursor()
函数返回一个Position
对象,以表示光标的位置。但是,由于Position
使用元素和偏移量来定位光标,因此很难将元素存储在脚本属性中(JSON.stringify
不适用于Element
接口,因为它太复杂了)。为了保存光标位置,我在文档正文的文本中存储了一个索引。
onOpen
:使用setCursor
函数将当前光标重置到最后存储的位置
注意:截至2019年1月,应用程序脚本没有onClose()
或onExit()
触发器,因此必须定期调用onCursorMove()
来更新当前脚本。光标位置。而且由于应用程序脚本不支持异步处理,因此您可以考虑使用HTMLService,TriggerBuilder或其他技术来规避。另外,当前执行时间限制为6分钟。