LoginSignup
6
11

More than 5 years have passed since last update.

今日から使えるGASの基礎知識とノウハウについてまとめてみた

Posted at

はじめに

前回、Google Apps ScriptでGoogleカレンダーからタイムスケジュールを作成してみたを行った結果を元に簡単にGASのノウハウと使った感想についてまとめました。

関数じゃ難しい!GASを使った理由

以前を作る際にGASを使うきっかけになったのは、以下のような理由からでした。
Excelでも関数だけで行うのは難しく、マクロやVBAなどを使うことになる場合がありそうです。

セルのカラーコード

  • 取得ができない

複数の条件からそれぞれマッチする値やセル番号を取得

  • VLOOKUPや集計関数を使いこなせばできると思うが複雑
  • 計算するためのセルがいくつも必要なのでヤダ!

Googleカレンダーからデータを取得したい

  • Slackなどのサービスと連携したい

私がよく使った関数3選

こちらのソースコードで実際に使っています。

Logger

ロガークラスです。

Logger.log()

  • ログを出力します

使用例

Logger.log('apple');

SpreadsheetApp

スプレッドシートを操作するためのクラス群です。

SpreadsheetApp.getActive().getSheetByName()

  • 操作するシートを指定します

使用例

SpreadsheetApp.getActive().getSheetByName("スケジュール");

getRange()

  • 操作するセルの範囲を指定します
  • 関数操作のときのような行列番号を指定する方法と、行列を単なる数値で指定する方法の2種類があります

使用例

var sheet = SpreadsheetApp.getActive().getSheetByName("スケジュール");
var range = sheet.getRange("B3:O50");

getValues()/setValues()

  • セルの値を操作します
  • Values関数の場合は、複数のセルの値を配列形式で扱います
  • 1セルのみの場合は、getValue()/setValue()を使用します

使用例

var cells = sheet.getRange(1, 2, 1, 16);
var dateHeaders = cells.getValues();

getBackground()/setBackground()

  • セルの色を操作します
  • 引数にはカラーコードを指定します

使用例

var range = sheet.getRange("B3:O50");
range.setBackground("#FF0000");

parseXXX()

  • 演算や出力を行う際は型指定が厳密になっているので、
  • パースを行う必要があります

使用例

// int型
parseInt(1);

// float型
parseFloat(1);

// string型
String(1);

ここが楽しいよ!GAS

大方はJavaScriptなので学習コストが低い

当たり前だけどセルに関数を挿入できるのはいい

スクリプトエディタのUIが直感的

Google製サービス連携が楽

ここがつらいよ!GAS

スクリプトエディタが貧弱

  • 自動整形やインデント表示がない

6分以上の実行でタイムアウトエラー

  • イベントトリガーの場合は、6分以内の処理にしなければならない
  • 実行時刻を指定するタスクスケジューラなら大丈夫そう

foreachがちょっと変(GASというよりJavascript)

  • for(var num in numbers)だとキーが取得できない
  • numbers.forEach(function(num, key)みたいな記述になる

イベントトリガーの条件が少ない

  • セルの値が変更されたとき、とか色々ほしい

実行速度が遅い

  • 仕方なしだけどタイムアウトエラーにならないようにするのに頭を使う

修正パッチ機能とかほしい

6
11
0

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
6
11