業務の自動化を行うため、SpreadSheetでGASを使ったスクリプトをよく組んでいます。
しかし、何かを作るたびにググってとても効率が悪いことを繰り返しているのでこの度メソッドをまとめ、GASおまとめ集を作ることにしました。
絶対といっていいほど使うやつ
シートの指定
シート名を使って取得する方法
const sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName('シートの名前')
ここで使われている getActiveSpreadsheet()というのが少しわかりにくいと思いますが、これが何を指しているかというと、GASのScriptをSpreadSheetから開いたと思います。そのため、SpreadSheetとApps Scriptが紐付いている状態になっています。この状態がActiveということです。
シートのインデックスを使って取得する方法
シートの一番左を0番として、インデックス番号を使ってシートを指定することができます。
例えば、3つ目のシートの場合、インデックス番号は2となり、以下のように指定できます。
const sheet = SpreadsheetApp.getActiveSpreadsheet().getSheets()[2]
データが存在している最終行の取得
getLastRow()
特定シートの最終行を取得します。
const lastRowIndex = sheet.getLastRow();
※sheetは前述の変数です。
データが存在している最終列の取得
getLastColumn()
特定シートの最終列を取得します。
const lastColIndex = sheet.getLastColumn();
範囲指定
複数セルを指定
getRange(row, column, numRows, numColumns)
- row: 開始行
- colum: 開始列
- numRows: 開始行からの行数
- numColumns: 開始列からの行数
2行2列から2列の最終行までを指定する場合以下のように指定できます。
getRange(2, 2, lastRowIndex, 1)
単一セルを指定
getRange(row, column)
これを前述の最終行の取得と組み合わせて、値の取得をしたい場合、以下のように記述できます。
const lastRowIndex = sheet.getLastRow();
const columnIndex = 5;
const targetCell = sheet.getRange(lastRowIndex, columnIndex)
最終行、5列のセルを特定することができます。
値の取得
複数セルの値を取得
getValues()
前述の複数セルの指定を使い値を取得すると
const colValues = sheet.getRange(2, 2, lastRowIndex, 1).getValues()
単一セルの値を取得
getValue()
前述のセルの特定と組み合わせると、そのセルの値を取得することができます。
const lastLineValue = sheet.getRange(lastRowIndex, columnIndex).getValue();
値の置き換え
複数セルの値を置き換え
setValues("置き換える値")
単一セルの値を置き換え
setValue("置き換える値")
前述のgetValueと同様に使用することができ、getRangeで取得したセルの置き換えに使用できます。
たまに使うやつ
シートの値を別シートにコピー
"コピー元"copyTo("ペースト先")
範囲を指定してコピーした値を、ペースト先の最終行以降に貼り付ける例です。
// コピー元シート
const copySheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName('コピー元シート名')
// コピー対象セル
const copyLastRowIndex = copySheet.getLastRow();
const copyValues = copySheet.getRange(3, 1, copyLastRowIndex, 100)
// ペースト先シート
const pasteSheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName('コピー先シート名')
// ペーストセル
const pasteLastRowIndex = pasteSheet.getLastRow()
const pasteValues = pasteSheet.getRange(pasteLastRowIndex+1, 1)
copyValues.copyTo(pasteValues)
セルの値をクリアする
クリア(削除)するメソッドは以下の3種類があります。
全てクリアするメソッドですが、少し役割が異なります。
clear()
clearContent()
clearFormat()
- clear()
contents と formats をクリアする - clearContent()
formatの変更はされず、contentのみクリアする - clearFormat()
formatのみクリアする
それぞれの違いがわかったところで、一番使われるであろうclear()で具体例を見てみましょう。
前述のgetRangeを使い範囲を指定してクリアします。
const range = getRange(2, 2, lastRowIndex, 1)
range.clear()
参照元
公式ドキュメントは以下になります。
コメント