0
0

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 1 year has passed since last update.

Google Spreadsheet でマクロを扱う

Posted at

Google Spreadsheetの弱点

Google Spreadsheetは、もはや説明不要の便利な表計算ツールですね。
ブラウザ上で立ち上げられることと、特殊な操作が不要で複数人が編集可能であることが、
大きな強みとして挙げられると思います。
関数群も豊富で、もはやちょっとしたツールなら、Webアプリを作るよりも遥かに早く、
目的のツールを作ることが出来てしまいます。

しかし、そんなSpreadsheetにも、弱点が存在します。

それは、
マクロが標準装備されていない
んですね。

関数は豊富ですが、それはあくまで与えられた値を計算して出力するもの、
直接値を書き換える必要があるときには使うことが出来ません。
表計算ツールとして考えるとそれで十分なんですが、
やはり、値の書き換えは出来たほうがやれることの幅が広がる…。
そんな時に役に立つものがありました。

それが、Google Apps Scriptです!!

Google Apps Script

Google Apps Script (以下:GAS) は、Googleが提供するサービスの自動化をすることを主目的にされたスクリプト言語です。
使い慣れたJavascriptライクな構文を使用することが出来ます。
このスクリプトの記述も、ブラウザ上で編集/実行/テストが可能という特徴を持ち、
ローコストな開発が可能です。

SpreadsheetでのGASの使い方

新規作成

まずは新規でSpreadsheetを作成します。

メニュータブのなかから、拡張機能を選び、AppsScriptを選びます。

AppsScriptの画面が開き、無題のプロジェクトと言う名前で、空の関数が作成されていると思います。

function myFunction() {
  
}

では実際にスクリプトを書いてみましょう。

function myFunction() {

  Logger.log("hello world.")
  
}

保存し、実行ボタンを押してみましょう。

画面下部の実行ログに

情報 hello world.

と出力されていたら、成功です。

Spreadsheetの値を取得する

このままでは何ら意味のない、単体の文字を出力するだけのスクリプトなので、
実際にSpreadsheetの値を取得してみます。

Spreadsheet側の A1 セルに、I'm spread sheet と入力します。

次に、GAS側で次のようにスクリプトを作成します。

function myFunction() {

  // アクティブなSpreadsheetを取得
  const spreadsheet = SpreadsheetApp.getActiveSpreadsheet();

  // アクティブなシートを取得
  const activeSheet = spreadsheet.getActiveSheet()

  // A1セルを取得
  const range = activeSheet.getRange("A1")

  // セルの値を取得
  const val = range.getValue()

  Logger.log(val)
  
}

これを実行してみましょう。

情報 I'm spread sheet

と出力されていたでしょうか?

Spreadsheet側のA1を変更すると、こちらの出力も連動して変更されます。

Spreadsheetに値を書き込む

次に書き込みを行う方法を記載します。
スクリプトを以下のように変更します。

function myFunction() {

  // アクティブなSpreadsheetを取得
  const spreadsheet = SpreadsheetApp.getActiveSpreadsheet();

  // アクティブなシートを取得
  const activeSheet = spreadsheet.getActiveSheet()

  // B1セルを取得
  const range = activeSheet.getRange("B1")

  // セルに値を設定
  const val = range.setValue("I am Google App Script.")

}

実行してみましょう。今度は情報には特に何も表示されません。
ですが、Spreadsheet側を見てみると、
B1セルに、I am Google App Script.
という文言が追加されているはずです。

マクロ化

Spreadsheetから取得と、Spreadsheetへの書き込み、2つのインターフェースを使用できました。
取得した値はJavascriptの要領で、様々に加工可能です。
可能した値をSpreadsheetへの書き込みを用いれば、好きなようにSpreadsheetを変更可能です。

これにより、Spreadsheetの値を用いて、Spreadsheetへ書き込むという事が可能になり、
値の直接書き換えという当初の目的を達することが出来ます。

0
0
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
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?