【GAS】アクティブなセルを取得する

GAS

GASを使って現在アクティブになっている(選択している)セルを参照する方法について解説します。

アクティブなセルを取得する

アクティブなセルの取得はgetActiveCellを使います。またgetActiveCellは複数セルを選択していても一番左上のセルの値だけを返しますので複数のセルを取得したいのであれば、getActiveRangeListなどを使用する必要があります。

また、getActiveCellはアクティブなセルの場所を取得するだけです。入力されているデータを取得する、セルの番地を取得するなどは他のメソッドが必要です。

下記はRangeクラスでよく使われるメソッドの一例です。

メソッド
getA1Notation()範囲を説明する文字列を A1 表記で返します。
getValue()範囲内の単一セルの値を取得します。
getRow()行の番号を取得します。
getColumn()列の番号を取得します。
たぬき
たぬき

他にもたくさんのメソッドがありますが、今回はよく使われるメソッドをご紹介します。

次で上から順にご説明します。

アクティブなセルの位置:getA1Notation

function myFunction() {
  var ss  = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet();
  var active = ss.getActiveCell().getA1Notation();
  console.log(active);
}

アクティブなセルの位置を取得するには、getA1Notationを使用します。getA1Notationは、アクティブなセルの位置をA1形式で取得します。例えば、getActiveCellがC4を取得しているのなら、「C4」というセルの番地をgetA1Notationは返します。

アクティブなセルの値を取得:getValue

function myFunction() {
  var ss  = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet();
  var active = ss.getActiveCell().getvalue();
  console.log(active);
}

アクティブなセルの値を取得するには、getValueを使用します。getValueは取得したセル範囲に入力されているデータを返します。例えば、getActiveCellが取得しているセルの番地に「たぬき」というデータが入力されているのなら、「たぬき」という情報をgetValueは返します。

アクティブなセルの行番号を取得:getRow

function myFunction() {
  var ss  = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet();
  var active = ss.getActiveCell().getRow();
  console.log(active);
}

アクティブなセルの行番号を取得するにはgetColumnを使用します。getRowは取得したセル範囲の最初のセルの行番号を返します。getActiveCellが取得できるのは単一セルのみなので、結果としてgetRowはgetActiveCellで取得している行番号を返します。例えば、getActiveCellがC4を取得しているのなら「4」をgetRowを返します。

アクティブなセルの行番号を取得:getColumn

function myFunction() {
  var ss  = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet();
  var active = ss.getActiveCell().getColumn();
  console.log(active);
}

アクティブなセルの列番号を取得するにはgetColumnを使用します。getColumnは取得したセル範囲の最初のセルの列番号を返します。getActiveCellが取得できるのは単一セルのみなので、結果としてgetColumnはgetActiveCellで取得している列番号を返します。例えば、getActiveCellがC4を取得しているのなら「3」をgetColumnを返します。

アクティブなセルに移動する

では最後に、getRowとgetColumnを使用して、getActiveCellで取得したセルに移動する方法をご紹介します。

function myFunction() {
  var spreadSheet  = SpreadsheetApp.getActiveSpreadsheet();
  var ss = spreadSheet.getActiveSheet();
  var active = ss.getActiveCell();
  var ac = active.getColumn();
  var ar = active.getRow();
  ss.getRange(ar+1,ac).activate();
}

上記のコードでアクティブセルに移動することができます。厳密にはアクティブなセルの一つ下に移動します。アクティブなセルの右隣に移動したい場合は(ar+1,ac)を(ar,ac+1)にしてください。

なぜ直接アクティブセルに移動しないのかと言うと、既にアクティブなセルにはactivateが効かないためです。activateは指定した場所をアクティブ化させるメソッドとなります。

getActiveCellで取得したアクティブな場所を、getColumnとgetRowで数値化。そしてgetRangeを使いアクティブセルの一つ下をアクティベートさせることで、強制的に画面を遷移させています。

まとめ

以上、アクティブなセルを取得する方法についてご紹介しました。是非getActiveCellを使いこなしてくださいね。当記事があなたの参考になれば幸いです。

コメント

タイトルとURLをコピーしました