Help us understand the problem. What is going on with this article?

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

More than 1 year has passed since last update.

はじめに

前回、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)みたいな記述になる

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

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

実行速度が遅い

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

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

neriai
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
No comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
ユーザーは見つかりませんでした