GoogleスプレッドシートとGoogleAppsScript(GAS) はじめの一歩（非エンジニア向け）

エニグモ データ活用推進室 @kmt47 です。
この記事は[Enigmo Advent Calendar 2018の5日目](https://qiita.com/advent-calendar/2018/enigmo)です。

# 自己紹介

2018年4月にエニグモに入社しました。
社会人経験、エンジニア経験は、かれこれ20年を超えました。
あえて分類するとデータベースエンジニアになるでしょうか。
SIer時代は、ご多分に漏れず、PG, PL, PMなど経験しましたが…
その頃は「DBといえばOracle」という時代でしたので、Oracleは7から9iくらいまでかなりやりました。
そこからネット系の事業会社を転々と。

# この記事の目的

タイトルに「はじめの一歩」とあるように、はじめてGoogle SpreadsheetでGoogle Apps Script(GAS)を利用する方向けの内容です。
どちらかというと非エンジニア向けの内容です。

新しいことを習得しようとしたときに、誰もが最初は初心者です。いろいろな壁にぶつかると思います。何時間も悩んだ挙句、気づいてみたらとても些細なことだった、なんてことも一度や二度ではないでしょう。
ただ、ある程度コツが掴めてくると、そこからは順調に事が進むようにもなりますよね。（エラーが出たときの対処の方法や、分からないことが出てきた時の調べ方のコツが身についてくるんだと思います。）

ただ、コツを掴む前に挫折してしまう人もいるでしょう。
そもそも、最初の一歩すら踏み出せない方もいるでしょう。

本記事は、そんな一歩を踏み出すための「何となくできそうかも」を感じてもらうことを目的としています。なので、最小限の手順で、最小限のプログラムとし、難しい解説は省いています。

まずは「はじめの一歩」を踏み出していただければ幸いです。

# GASとは？

Google Apps Script（GAS）とは、Google社が提供するスクリプト言語です。以上。

## GASで出来ること

GASでは、GoogleスプレッドシートやGoogleカレンダーなどGoogle社が提供するサービスに対して操作（処理）することができます。まぁ、いろいろできますが、それは追々分かっていけばよいと思います。


# 本題

## 目次

1. Google Spreadsheetを開く
2. スクリプトエディタを開く
3. GASを実行する
4. スプレッドシートの値を取得する
5. スプレッドシートに値を出力する

## Google Spreadsheetを開く

Googleドライブから「新規」＞「Googleスプレッドシート」＞「空のスプレッドシート」を選択

![image.png](https://qiita-image-store.s3.amazonaws.com/0/310966/6cf8a8b0-d75d-56ef-fa0a-2ae7452e2f93.png)

空のスプレッドシートを開くことができました！！（GAS以前の話ですね）

## スクリプトエディタを開く

「ツール」＞「スクリプトエディタ」を選択

![image.png](https://qiita-image-store.s3.amazonaws.com/0/310966/5b80bfbd-ec76-6c2c-82ef-41bd4d048774.png)

別のタブにスクリプトエディタが開きます。

![image.png](https://qiita-image-store.s3.amazonaws.com/0/310966/dd2a1bfd-67be-4391-2a6a-20d24c3d57fa.png)

プログラムを書くエディタらしき画面ができていましたね。（ﾊﾟﾁﾊﾟﾁ）

## GASを実行する

2行目に以下を記載して、「▶」ボタンを選択

```
Logger.log("Hello, World!");
```

Logger.logは、引数の値をログに出力する関数です。

![image.png](https://qiita-image-store.s3.amazonaws.com/0/310966/e07b59c3-7507-7857-043d-d39182f4331c.png)


「表示」＞「ログ」を選択、ログ画面が表示

![image.png](https://qiita-image-store.s3.amazonaws.com/0/310966/3b925f96-e2da-43b0-15a9-ccbe08ba34ec.png)

おめでとうございます。あなたの作成したGASが見事に実行されました！（ﾊﾟﾁﾊﾟﾁﾊﾟﾁ）

## スプレッドシートの値を取得する

A1のセルの値を読み込んで、ログに出力してみましょう。

![image.png](https://qiita-image-store.s3.amazonaws.com/0/310966/80102da5-0a09-0b4a-2d5c-0fe1bb21fb73.png)

ここから少しプログラミングっぽくなってきますよ。

```
function myFunction() {
  //アクティブのシートを取得
  var sheet = SpreadsheetApp.getActiveSheet();
  
  //セルA1を変数rangeに取得する
  var range = sheet.getRange('A1');
  
  //rangeの値をログに出力する
  Logger.log(range.getValue());
}
```


SpreadsheetApp.getActiveSheet()で対象のシートを変数(sheet)に格納します。
getActiveSheet()では、アクティブ（いま選択されている）シートが選択されます。
getSheetByName(シート名)では、シート名からシートを選択できます。

次に対象のセルを変数(range)に格納します。
sheet.getRange('A1')のように、セルのアドレスを指定する方法と、
sheet.getRange(1, 1)のように、セルの行番号と列番号を指定する方法があります。
sheet.getRange(行番号, 列番号)の順で指定します。

Logger.log(range.getValue())では、指定したセルの値をログに出力しています。

![image.png](https://qiita-image-store.s3.amazonaws.com/0/310966/537254da-1e92-5ea5-6d7d-7c34485a238f.png)

A1のセルの値がログに出力されました。

## スプレッドシートに値を出力する

次は、スプレッドシートに値を出力するプログラムです。

```
function myFunction() {
  //アクティブのシートを取得
  var sheet = SpreadsheetApp.getActiveSheet();
  
  //セルA3を変数rangeに取得する
  var range = sheet.getRange('A3');
  
  //A3に"Hello, GAS!"を入力
  range.setValue("Hello, GAS!");
}
```

「スプレッドシートの値を取得する」と同様に
SpreadsheetApp.getActiveSheet()でシートを変数(sheet)に格納し、
sheet.getRange('A3')で対象のセルを変数(range)に格納します。

そして、range.setValue("Hello, GAS!")で対象のセルに値を入力します。

![image.png](https://qiita-image-store.s3.amazonaws.com/0/310966/5187c7aa-160d-4db0-6782-7249620862aa.png)

A3のセルに値を出力することができました。

# まとめ

データを読み込んで、書き出すというプログラミングの基本を通して、GASによるGoogleスプレッドシートの操作について見てきました。

「何となくできそうかも」と感じていただけたでしょうか？

本格的にGASを利用するとなると、関数、変数、データ型、オブジェクト、メソッド、配列などなど、知っておく必要のあることは、いろいろあります。

ただ、いっぺんに全て理解する必要はありません。必要なことから少しずつ理解を進めていけば大丈夫です。

私はその過程で以下のサイトを大変参考にさせていただきました。
例題をもとに分かりやすく解説されていますので、是非参考にしていただければと思います。

「いつも隣にITのお仕事」
https://tonari-it.com/

【保存版】初心者向け実務で使えるGoogle Apps Script完全マニュアル
https://tonari-it.com/google-apps-script-manual/

それでは、GASへの「はじめの一歩」を踏み出していただければ幸いです。