53
47

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

Google Apps Scriptでデバッグ

Posted at

SpreadSheetで、セルとか行を引数にとって何か実行して返すような関数をApps Scriptで書いた場合、どうやってその関数をデバッグするのかさっぱりわからない。

例えばこういう引数をとらない関数だったら、関数実行するボタン押せば実行されてログが表示される。

function printProductInfo() {
  var sheet = SpreadsheetApp.getActiveSheet();
  var data = sheet.getDataRange().getValues();
  for (var i = 0; i < data.length; i++) {
    Logger.log("Product name: " + data[i][0]);
    Logger.log("Product number: " + data[i][1]);    
  }
}

けど、こんな感じで引数を取るやつは実行ボタン押しても引数がわからない。(rowsはスプレッドシート側で=calc(A:A)とかで渡される)

function calc(rows) {
  for (var i = 0, len = rows.length; i < len; i++) {
    var row = rows[i];
    // 何か処理
  }
}

スクリプトを保存してスプレッドシートの方に戻ると、この関数が適用されているセルで再実行されて返り値がそのセルに表示されるので、こんな感じで書いて無理矢理デバッグした。

function calc(rows) {
  var debug = [];
  for (var i = 0, len = rows.length; i < len; i++) {
    var row = rows[i][0];
    // 何か処理
    debug.push(foo); // デバッグしたい値を適当につっこむ
  }

  return JSON.stringify(debug);
}

これはひどい。

53
47
5

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
53
47

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?