如何在 Google 脚本库中键入提示 Google 类型?

How to type hint Google Types in Google Scripts Library?

我问了一个,通过回答发现我没有问对问题!

LibraryFoo 是一个库,如果我在其他地方将其用作库,我会得到类型完成。例如,如果我有

/**
 *  Lorem ipsum
 *
 *  @return {Object[]}
 *
 */
function bar() {}

LibraryFoo 中,如果在另一个 Google 脚本中输入 LibraryFoo.bar().,我会得到像 forEachmap 这样的数组的建议。但是,如果我有

/**
 *  Lorem ipsum
 *
 *  @return {Sheet}
 *
 */
function barring() {}

然后我输入 LibraryFoo.barring(). 我没有收到像 getRangegetMaxColumns 这样的建议。我知道使用 clasp 和 local IDE 可能更有意义,但似乎是以下两种情况之一:

  1. 我使用了错误的 name/reference(虽然当输入 Google 自己的函数时,他们只是说“Sheet”。例如 SpreadsheetApp 的源代码是否可用?这可能是一个提示,或者不在正确的 GAS 中。
  2. 这是不可能的,因为Google做了一些I/we做不到的事情。

无论如何,尽管搜索并尝试了不同的方法来命名 Sheet 引用,但我还没有发现它是 1. 还是 2.(或其他东西!)。

[编辑:我做了一个 feature request 到 Google,仍然不确定它是 1./2./其他东西中的哪一个]

考虑

This is not currently possible to achieve in the Apps Script Editor.

Google Issuetracker 上有一些关于此的开放功能请求:

Support Object Oriented Interfaces with documentation for Libraries

Full jsdoc for classes and methods

还有一个 new feature request 作为讨论的结果提交 - 为它或上面提到的其他内容加注星标,以增加很快实施该功能的机会。

JSDoc 在 Google Apps 脚本中未得到完全支持,并且在当前状态下,自动补全不会比 top-level 定义更进一步。这适用于自定义 类 和 built-in 类,如 SpreadsheetSheetRange,因为这里的自动完成需要二级迭代。

新编辑器支持,语法示例如下:

/**
 *  Returns price list data from the Stock tab/sheet
 *
 *  @param {number} index 
 *  @return {SpreadsheetApp.Range}
 *
 */
function getRange() {
  return SpreadsheetApp.getActiveRange();
}

function foo() {
  getRange().
}

您将在 getRange(). 中的 . 之后完成范围对象。

如果函数来自库,这也适用。