みなさん、こんにちは。どんぶラッコです。
今回はGAS (google app script)の基本操作についてまとめてみようと思います!
GASを覚えれば、Excelのマクロのように作業の自動化が夢じゃありません!
今回は基本動作である、セルのコピー、貼り付け、削除について学習していきます。では、早速やってみましょう!
前提: GASの記述場所
まずはGoogle Spreadsheetを開きます。
そして、ツール→スクリプトエディタ を選択します。

すると、こんな画面が表示されます。

ここが、実際にコードを記述していく場所になります。
任意の値を挿入する
まずは試しに好きなセルに日付を挿入する操作をしてみましょう。
function setValue() {
var activeSheet = SpreadsheetApp.getActiveSpreadsheet();
activeSheet.getSheetByName('シート1').getRange(2, 1, 3 ,2).setValue(new Date())
}
このように書いた上で、 cmd + s (or ctrl + s) でセーブをします。
では、実際に関数を実行してみましょう。エディタ上部で setValue
関数が選択されていることを確認し、実行ボタンをクリックします。

初回の場合、実行の許可を求められるので、「許可を確認」を押し、google アカウントで実行権限を許可してください。

以下のように 2*3 マスに 時刻が表示されていたら実行成功です!

何をやっているのか、コード毎にみていきましょう。
var activeSheet = SpreadsheetApp.getActiveSpreadsheet();
SpreadsheetApp.getActiveSpreadsheet()
で、現在開いているスプレッドシートの情報を取得します。
activeSheet.getSheetByName('シート1').getRange(2, 1, 3 ,2).setValue(new Date())
1行目で作成した activeSheet
オブジェクトを使います。
getSheetByName(シート名)
… どのタブを参照するかを指定します。
getRange(行番号, 列番号, 高さ, 幅)
… 操作する範囲を指定
setValue(値)
… 値をセットする
最初に混乱するのが getRange()
ではないかと思います。文字で見ると混乱しますが、視覚で整理すれば全く難しいことはありません。
今回は getRange(2, 1, 3 ,2)
と指定していますね。 SpreadSheet上で確認してみましょう。


高さ、幅と表現しているのはオフセット値のことです。選択したセルから相対的にどれくらい離れた位置を指定するかということです。ややこしくなるので高さ、幅と表現しています。
「”行列”の順番」で基準を指定してから「”行列”の順番」でオフセット値を指定する…と記憶しておけばいいね!
コピー & ペーストしてみる
では次にコピー&ペーストをする関数を作成してみましょう。
function copyAndPaste () {
var activeSheet = SpreadsheetApp.getActiveSpreadsheet();
activeSheet.getSheetByName('シート1').getRange(2, 1, 3 ,2).copyTo(
activeSheet.getSheetByName('シート1').getRange(2, 4)
)
}
セーブしたら、今度は copyAndPasteを選んでコードを実行してみましょう。

コピーできていれば成功です!

前回の文字挿入を理解しているならわかりやすいですね!
copyTo()
を使うとコピー&ペーストができます。
みなさんも挑戦してみてください!