2
1

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 3 years have passed since last update.

40 代おっさん GASのRangeクラスについて学ぶ

Posted at

本記事ついて

本記事は プログラミング初学者の私が学習していく中でわからない単語や概要をなるべくわかりやすい様にまとめたものです。
もし誤りなどありましたらコメントにてお知らせいただけるとありがたいです。

Rangeクラス

Rangeクラスとは
セル範囲を操作する機能を提供するクラス

*Rangeクラスの主なメンバーの図はさすがに作るのがきびしいので、参考資料の本を見ていただくか、ネットで調べください。

ちなみにこちらで書いてありました。
https://hirachin.com/post-4021/

お試し

function toshiki4() {
  const range = SpreadsheetApp.getActiveSheet().getRange('A2:C4');

  console.log(range.getA1Notation());
  console.log(range.getRow());
  console.log(range.getColumn());
  console.log(range.getNumRows());
  console.log(range.getNumColumns()); 
  console.log(range.getLastRow());
  console.log(range.getLastColumn());
}

値を収得、入力

getValueメソッド
単体セルの収得

構文

Rangeオブジェクト.getValue()

setValueメソッド
セルの入力

Rangeオブジェクト.setValue()

これだと複数のセルの収得すると複数分のアクセス回数が必要になる。
セル範囲が対象の場合は、配列として取得する。

getValuesメソッド
対象セル範囲の値を配列として収得

構文

Rangeオブジェクト.getValues()

setValuesメソッド
配列を対象のセル範囲に入力

Rangeオブジェクト.setValues(配列)

こちらの2つがとる配列は 行×列 になるので2次元配列になります。

*setValuesメソッドでは対象となるセル範囲の 行数×列数 と引数として与える 要素数×要素数が一致している必要がある。

お試し
スプレッドシートにデータを入れてください

function toshiki4() {
  const sheet = SpreadsheetApp.getActiveSheet();

  console.log(sheet.getRange('A3'));
  sheet.getRange('B6').setValue('こんにちは');

  console.log(sheet.getRange('A1:C2'));
  const values = [
    ['パパ', 41, ''],
    ['アッキー', 9, 'リンゴ']
  ];
  sheet.getRange(3, 1, values.length, values[0].length).setValues(values);
}

数式を入力

setFormulaメソッド

構文

Rangeメソッド.setFormula(A1形式の数式)

setFormulaR1C1メソッド

構文

Rangeメソッド.setFormulaR1C1(R1C1形式の数式)

setFormulasメソッド

構文

Rangeメソッド.setFormulas(A1形式の数式の配列)

setFormulaR1C1メソッド

構文

Rangeメソッド.setFormulasR1C1(R1C1形式の数式の配列)

A1形式は、A1、B2:C2という形に列をアルファベット、行を数字でセルの絶対アドレスを表現する形式

R1C1形式は、R[1]C[1] RC[-1] と言うように、現在対象となっているセルからの相対的な位置を、行方向をRに続く値、列方向をCに続く値で表現する形式

お試し

function toshiki4() {
  const sheet = SpreadsheetApp.getActiveSheet();

  sheet.getRange('B5:D5').setFormulas([[
    '=SUM(B2:B4)',
    '=SUM(C2:C4)',
    '=SUM(D2:D4)',
  ]]);
  sheet.getRange('D2:D4').setFormulaR1C1('=RC[-2]*RC[-1]');
}

書式を設定する

いきなりお試しで

function toshiki4() {
  const sheet = SpreadsheetApp.getActiveSheet();
  sheet.clearFormats();

  const rangeTable = sheet.getDataRange();
  rangeTable
    .setBorder(false, true, false, true, true, null)
    .setFontSize(14)
    .setFontFamily('メイリオ')
    .setNumberFormat('#,##0');

  const rangeHeader = sheet.getRange('A1:D1');
  rangeHeader
    .setBackgrounds([['yellow', 'yellow', 'yellow', 'orange']])
    .setHorizontalAlignment('center');

  const rangeTotal = sheet.getRange('A5:D5');
  rangeTotal.setFontWeight('bold');

  const rangeItemName = sheet.getRange('A2:A5');
  rangeItemName.setFontColors([['red'], ['orange'], ['purple'], ['glay']]);
}

こんな感じで使うみたいです。
雑ですいません。

セル範囲の並び替え・重複の削除

sortメソッド
並び替えするメソッド
列番号を指定すれば対象セル範囲を指定した列をキーに昇順で並び替え

構文

Rangeオブジェクト.sort(列番号)

複数の列をキーとしたい場合や降順で並び替えしたい場合
ソートを定めたオブジェクトを配列で指定
ascendingプロパティをtrueにすると降順、falseにすると降順

構文

Rangeオブジェクト.sort([
  {column: 列番号, ascending: true/false}},
  {column: 列番号, ascending: true/false}},
  ...
])

removeDuplicatesメソッド
行の重複削除をすることができるメソッド
重複データがある場合は、一行だけ残して削除

構文

Rangeオブジェクト.removeDuplicates([列番号の入れる])

お試し
スプレッドシートにデータを入れてください

function toshiki4() {
  const sheet = SpreadsheetApp.getActiveSheet();
  const row = sheet.getLastRow() - 1;
  const column = sheet.getLastColumn();

  const range = sheet.getRange(2, 1, row, column);
  range.sort([
    {column:1, ascending: true},
    {column:2, ascending: false}
  ]).removeDuplicates();  
}

参考資料

https://www.amazon.co.jp/s?k=google+apps+script+%E5%AE%8C%E5%85%A8%E5%85%A5%E9%96%80&adgrpid=110264232688&gclid=CjwKCAiA9aKQBhBREiwAyGP5lSl7AJJLCvOEHb4wQgMlyqW1fll5X8GDTT_Rkd1_soUAyIPMXQr26hoClHEQAvD_BwE&hvadid=553833563682&hvdev=c&hvlocphy=1009076&hvnetw=g&hvqmt=b&hvrand=4378489642044417389&hvtargid=kwd-594191211348&hydadcr=4106_13159878&jp-ad-ap=0&tag=googhydr-22&ref=pd_sl_2x1owglv0s_b_p52

2
1
1

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
2
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?