ray88’s diary

お仕事で困ったとき用の自分用の覚書

GAS コメントの書き方

各種目次 - ray88’s diary
GAS 目次 - ray88’s diary
GASにおけるコメントの書き方:JSDoc形式と実用例でスッキリ理解!

関数にコメント、書いてますか?
GAS(Google Apps Script)を書いていて、関数や処理内容の説明をどう記述するか迷ったことはありませんか?VBAとは少し違う「GASらしい」コメントの書き方を、初心者向けと実務向けの両面から解説します。

関数の説明はJSDoc形式で
GASではJavaScriptベースであるため、関数の説明には「JSDoc」という形式を使うのが一般的です。関数の上に記述して、引数や戻り値を明示できます。

/**
 * 指定した列の最終データ行を取得する
 * @param {number} column_num - 列番号(1=A列、2=B列...)
 * @return {number} 最終データ行の行番号
 */
function getLastRow_forSpecificColumn(column_num) {
  const ss = SpreadsheetApp.getActiveSpreadsheet();
  const sheet = ss.getSheetByName('シート1');
  
  const lastRow = sheet
    .getRange(sheet.getMaxRows(), column_num)
    .getNextDataCell(SpreadsheetApp.Direction.UP)
    .getRow();
    
  return lastRow;
}

JSDocでよく使うタグ一覧
覚えておくと便利なタグは以下の通りです。

  • `@param {型} 引数名 - 説明`:引数の解説
  • `@return {型} 説明`:戻り値の解説
  • `@example`:使用例
  • `@author`:作成者名

処理の中に書くコメント
関数外の処理にもコメントをしっかり入れておくと、他の人や未来の自分にとって読みやすくなります。VBA経験者なら、比較コメントが特に有効です。

function processData() {
  // VBAの Range("A1").End(xlUp).Row と同じ処理
  const lastRow = sheet.getRange(sheet.getMaxRows(), 1)
    .getNextDataCell(SpreadsheetApp.Direction.UP)  // End(xlUp)に相当
    .getRow();

  // VBAの Range("A1:C10").Value と同じ
  const values = sheet.getRange("A1:C10").getValues();  // 2次元配列で取得

  // VBAの Cells(i, j) と同じ(ただし0ベースではなく1ベース)
  const cell = sheet.getRange(i, j);
}

初心者向けの丁寧なコメント例
コードの理解を深めるため、各処理の意図を明記します。

function getLastRow_forSpecificColumn(column_num) {
  // スプレッドシートとシートを取得
  const ss = SpreadsheetApp.getActiveSpreadsheet();
  const sheet = ss.getSheetByName('シート1');
  
  // 最下行から上向きに検索して最終データ行を取得
  const lastRow = sheet.getRange(sheet.getMaxRows(), column_num)
    .getNextDataCell(SpreadsheetApp.Direction.UP)  // VBAのEnd(xlUp)相当
    .getRow();
    
  return lastRow;
}

実務向けの簡潔なコメントスタイル
慣れてきたら、JSDoc形式だけで十分という場合もあります。

/**
 * 指定列の最終データ行を取得
 * @param {number} column_num 列番号
 * @return {number} 最終行番号
 */
function getLastRow_forSpecificColumn(column_num) {
  const sheet = SpreadsheetApp.getActiveSheet();
  return sheet.getRange(sheet.getMaxRows(), column_num)
    .getNextDataCell(SpreadsheetApp.Direction.UP)
    .getRow();
}

まとめ:コメントは「未来の自分と他人」のために
- GASではJSDoc形式を活用して関数の説明を記述

  • 処理内のコメントにはVBAとの対比が効果的
  • 初心者のうちは詳しく、慣れたら簡潔に

こうしたコメントスタイルを取り入れることで、コードの可読性と再利用性が大きく向上します。