为了保护代码(使人们看不到),我从独立脚本管理电子表格。
除了激活工作表或单元格以外,所有功能都起作用(这些函数与绑定脚本一起使用,计算正确,单元格被激活)。
我尝试通过独立脚本激活工作表,然后将其添加为库并从文件的绑定脚本中调用。没有效果。
我需要在打开电子表格时激活工作表和单元格。
这是我的代码(绑定到电子表格):
function onOpen() {
RandomNetwork.goToLastBlock()
}
这是库中的代码(独立脚本):
//goes to the last block on the sheet
function goToLastBlock() {
var file = SpreadsheetApp.openById("1kTOcxVv7RgIvp-BVvbZyBbeE92HiAKm8hbFURh19Enc")
var sheets = file.getSheets()
for (var i in sheets) {
var sheetID = sheets[i].getSheetId()
if (sheetID === 908402362) {
var lr = sheets[i].getLastRow()
var cell = sheets[i].getRange(lr, 1)
sheets[i].activate()
sheets[i].setCurrentCell(cell)
return
}
}
}
当我从绑定脚本运行它时,它将找到此电子表格和工作表,并正确计算出最后一行。但是当我从脚本运行时,它什么也没做。
如何从独立脚本激活工作表和单元格?我将不胜感激。
答案 0 :(得分:0)
您不能通过独立脚本激活工作表和单元格。
仅容器绑定脚本可以使工作表和范围处于活动状态。 container-bound description中没有明确提及您正在使用的特定方法,但这是事实。
图书馆具有更细微的作用域,您可以阅读有关here的更多信息。如表中所示(在链接中),库可以访问容器。本质上,因为您的容器绑定脚本使用该库,所以将独立脚本(如果您愿意)复制到了容器绑定脚本中,因此可以访问那些特权方法。
答案 1 :(得分:0)
每次更改库中的代码时,都需要发布新版本,并且还必须在库的绑定脚本中更改版本号。
作为测试,我将以下代码放在一个独立的脚本中:
//goes to the last block on the sheet
function goToLastBlock() {
var file = SpreadsheetApp.getActive();
var sheets = file.getSheets()
var theSheet = sheets[0];
var lr = theSheet.getLastRow()
var cell = theSheet.getRange(lr, 1)
theSheet.activate()
theSheet.setCurrentCell(cell)
return theSheet.getSheetName();
}
然后,从绑定到工作表的脚本中,我将库(独立)添加到绑定脚本中,并运行绑定脚本中的代码:
function onOpen() {
RandomNetwork.goToLastBlock()
}
代码激活了最后一行中的列A单元格。
我将该库作为Web App发布,以“用户访问Web App”和“组织内的任何人”的身份执行。
它对我有用,提供了示例代码并按照说明进行设置。