Como digitar hint Google Types na Google Scripts Library?

Oct 28 2020

Fiz uma pergunta e através da resposta descobri que não tinha feito a pergunta certa!

Digamos que LibraryFooé uma biblioteca e se eu usar isso em outro lugar como biblioteca, recebo o preenchimento de tipo. Por exemplo, se eu tiver

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

em LibraryFooe se no outro Google Script eu digitar LibraryFoo.bar().recebo sugestões para um array como forEache map. No entanto, se ao invés eu tiver

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

e digito LibraryFoo.barring().Não recebo sugestões como getRangeou getMaxColumns. Eu sei que usar clasp e IDE local pode fazer mais sentido, mas um dos dois parece ser o caso:

  1. Estou usando o nome / referência incorreto (embora quando as próprias funções do Google são digitadas, eles simplesmente dizem "Planilha". O código-fonte de SpreadsheetApp está disponível? Isso pode ser uma dica ou não estar no GAS adequado)
  2. Isso não é possível, porque o Google fez algo que eu / não podemos fazer.

Independentemente disso, apesar de pesquisar e tentar maneiras diferentes de definir o namespace da Sheetreferência, não descobri se é 1. ou 2. (ou outra coisa!).

[EDITAR: Fiz uma solicitação de recurso ao Google, mas ainda não tenho certeza de qual dos dois 1./2./algo mais é]

Respostas

2 Alessandro Oct 28 2020 at 16:02

Consideração

No momento, isso não é possível no Editor do Apps Script.

Existem algumas solicitações de recursos em aberto no Google Issuetracker sobre isso:

Suporte a interfaces orientadas a objetos com documentação para bibliotecas

Jsdoc completo para classes e métodos

Há também uma solicitação de novo recurso enviada como resultado da discussão - marque com estrela ou os outros mencionados acima para aumentar as chances de o recurso ser implementado em breve.

O JSDoc não é totalmente compatível com o Google Apps Script e o preenchimento automático não funciona além da definição de nível superior no estado atual. Isso se aplica a classes personalizadas e classes internas do gosto Spreadsheet, Sheet, Rangecomo o autocompletar aqui exigiria uma segunda iteração nível.