今までコメントは適当に書いてた。反省している。
ひとまず、自分流は以下。
1.始めはVSCodeでのGASクラスのコードヘルプ
コードヘルプなしでやってるとTypoが多くて実行時にやっと気づくレベル
VSCodeの設定をいじって、ちゃんとクラス、メソッドをでるようにしたらこのTypoが減った(当たり前)
2.オブジェクト変数でメソッド呼ぶときに不便を感じる
普通に型などなく、letだったり、関数の引数だったりすると、ヘルプは出ず、いままで使ったメソッドがずらり。
3.ヘルプが出る仕組みをみてメソッドのDocを書いてみた
/**
* @param {GoogleAppsScript.Spreadsheet.Spreadsheet } spreadsheet
*/
function func_A(spreadsheet){
}
これで、spreadsheet. と.をうった時点でSpeadsheetクラスのメソッドリストがでる。
ありがたい(当たり前)
4.メソッドの返り値も書いてみる
@returnsというのがあるので、これも記載。(書き方があってるか不安だが気にしない)
/**
* スプレットシートで何やらする関数
* @param {GoogleAppsScript.Spreadsheet.Spreadsheet } spreadsheet
*
* @returns {GoogleAppsScript.Spreadsheet.Spreadsheet } spreadsheet
*/
function func_return_Spreadsheet(spreadsheet)
{
let result = spreadsheet;
...
return result;
}
/**
* 処理のメインな関数
*/
function main()
{
let spreadsheet = func_return_SpreadSheet(SpreadsheetApp.getActive());
spreadsheet.
}
こちらも、戻りのspreadsheetのあとに.をうった時点でクラスメソッドやらの一覧がでる。
ありがたい。(当たり前)
5.当たり前だけどちゃんと書こう
ちゃんとやってる人は書いてる(と思う)けど、ちょっとGASでツールを、となると書いてない人もいるんではないだろうか。
GASはちょっと、で始めると関数爆発しちゃうから、ES6でちょっとした構造化したり、Doc使って引数やら返り値の型を知らせてあげると、ミスが減るんではないかー。と思った次第。
6.余談
自作クラスもオブジェクト化したり、スタティック関数を呼ぶ場合はヘルプとして出る。
しかし、自作クラスのメンバーは型がAnyになってしまう。
宣言の仕方はいまのところ見つけれてない。
本末転倒だけど、以下のようにしてみた。
class A
{
/**
*
* @param {GoogleAppsScript.Spreadsheet.Spreadsheet}
*/
constructor(spreadsheet)
{
this.mySpreadsheet = spreadsheet;
}
/**
*
* @returns {GoogleAppsScript.Spreadsheet.Spreadsheet } mySpreadsheet
*/
getMySpreadsheet()
{
return this.mySpreadsheet;
}
}
一応、これだと、this.getMySpreadsheet()の戻り値にはSpreadsheetクラスのヘルプが表示される。
コードの量やらコメントが増えるからゴニョゴニョ感じなくはないけど。
追記
@memberというのがあった。
上記は以下でもヘルプがでる模様。
class A
{
/**
*
* @param {GoogleAppsScript.Spreadsheet.Spreadsheet}
*/
constructor(spreadsheet)
{
/**
*
* @member {GoogleAppsScript.Spreadsheet.Spreadsheet}
*/
this.mySpreadsheet = spreadsheet;
}
}
試行錯誤で作ったので、もっとこうやったほうがいいよ、というのがあったら教えて下さいませ。