我在使用Google App Script中的自动填充功能时遇到了问题。
内置方法,如SpreadsheetApp。将提供一个自动完成菜单,其中包含可供选择的方法。
但是,如果我创建自己的子对象,自动完成会工作一段时间,然后它就会停止工作。
例如:
internal int _lineposition;
public int LinePosition
{
get
{
return this._lineposition;
}
internal set
{
this._lineposition = value;
}
}
skywardRoster。会产生一段时间的方法选项,然后停止。
然而,代码仍然起作用,如果我手动输入代码,方法也可以工作,所以我知道声明必须正确。菜单根本不会出现,而且在我去的时候单独查找每个方法非常不方便。
我试过:打破变量并重新输入该行;将代码复制并粘贴回编辑器;使用不同浏览器;复制gs文件本身并在副本中工作;并完全退出并重新登录。似乎没有什么能让它重新开始工作。
我对编码很陌生,我不确定是什么导致这种情况。
有谁知道如何解决这个问题?
答案 0 :(得分:2)
您可能需要查看Built-in Google Services:Using autocomplete:
脚本编辑器提供内容辅助"功能,通常称为"自动完成,"它揭示了全局对象以及在脚本当前上下文中有效的方法和枚举。要显示自动填充建议,请选择菜单项编辑>内容辅助或按 Ctrl + Space 。每当您在返回Apps Script类的全局对象,枚举或方法调用之后键入句点时,自动填充建议也会自动出现。例如:
- 如果单击脚本编辑器中的空白行并激活自动完成,您将看到全局对象的列表。
- 如果键入全局对象的全名或从自动填充中选择一个,则键入
.
(句点),您将看到该类的所有方法和枚举。- 如果您输入几个字符并激活自动填充功能,您将看到以这些字符开头的所有有效建议。
答案 1 :(得分:0)
由于这是google脚本无法自动完成的第一个结果,因此,我将在此处发布我的解决方案,因为它可能会在将来对某人有所帮助。
当我第二次为变量赋值时,自动完成功能对我来说不再起作用。
示例:
var cell = tableRow.appendTableCell();
...
cell = tableRow.appendTableCell();
因此,也许只是在实现过程中为第二个赋值创建一个新变量,以使自动完成功能正常工作。完成实现后,可以将其替换为原始变量。
示例:
var cell = tableRow.appendTableCell();
...
var replaceMeCell = tableRow.appendTableCell(); // new variable during the implementation
实现完成后:
var cell = tableRow.appendTableCell();
...
cell = tableRow.appendTableCell(); // replace the newly created variable with the original one when you are done
希望这会有所帮助!
答案 2 :(得分:0)
我一直在寻找改善 Google Apps 脚本开发体验的方法。有时自动完成会错过上下文。例如对于 Google 电子表格触发事件参数。我通过使用 clasp 和 @ts-check 解决了这个问题。
clasp 允许在本地机器上编辑 VS Code 中的源代码。它可以拉取和推送 Google Apps 脚本代码。 Here is an article how to try it.
当您转到 VS Code 和设置环境时,您可以在 JavaScript 文件的开头添加 //@ts-check 以帮助自动完成特殊说明。 Here is the instructions set.
我的触发器示例如下所示(注意自动完成功能仅适用于 VS Code,Google Apps Script 云编辑器无法理解 @ts-check 指令):
//@ts-check
/**
* @param {GoogleAppsScript.Events.SheetsOnEdit} e
*/
function onEditTrigger(e) {
var spreadsheet = e.source;
var activeSheet = spreadsheet.getActiveSheet();
Logger.log(e.value);
}
答案 3 :(得分:-1)
我同意,与大多数其他实现相比,Google Script的自动完成功能非常差。但是,在大多数情况下,这种不足是无法理解的,并且有时可以保留该功能。
自动完成功能仅限于Google对象(电子表格,文件等)。与它们一起使用时,您会获得自动完成提示,除非您将此类对象实例传递为参数。然后上下文丢失了,编辑器将不会在调用的函数内为您提供建议。那是因为js没有类型控制。
您可以将ID而不是对象(不是File实例,而是fileId)传递给函数,并在函数内部获取实例,但是在大多数情况下,此类操作会使脚本运行变慢。
卡梅伦·罗伯茨(Cameron Roberts)带来的东西可能是Goole's intence or a kind of hack,不知道。在函数开始时,将适当的对象实例分配给wariable参数,并将其注释为块:
function logFileChange(sheet, fileId){
/*
sheet = SpreadsheetApp.getActiveSheet();
*/
sheet.appendRow([fileId]); // auto completion works here
}