入金情報振り分け:「繰り返し」と「条件」をつかった事例【GAS】【Googleスプレッドシート】【関数】
本記事での学習
・定型回の繰り返し
・複数の条件(new)
・列の一番下にあるセルの位置を取得(new)
結構アナログな業務
リストにある情報を、人間が目視しやすいように振り分ける作業を想定してみました。正確性と忍耐力のいる業務です。
構成について
1.支店・名義を取得する
2.指定の支店を見つける
3.その列の一番下をさがす
4.そこに値を張り付ける
(1-4)を上から順に繰り返す
という構成になります。
「1」⇒ getRange と getValue
「4」⇒ getRange と setValue
でできそうです。
「繰り返し」も、前回記事のように
for(y=2;y<=11;y++)
{ なんちゃら }
で対応できそうです。
今回のコードです
function myFunction() {
const sheet = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet();
for(let i = 3; i <= 15; i++) {
const shiten = sheet.getRange(i, 1).getValue()
const meigi = sheet.getRange(i, 2).getValue()
const oosakaRow = sheet.getRange(1, 4).getNextDataCell(SpreadsheetApp.Direction.DOWN).getRow();
const hyogoRow = sheet.getRange(1, 5).getNextDataCell(SpreadsheetApp.Direction.DOWN).getRow();
const tokyoRow = sheet.getRange(1, 6).getNextDataCell(SpreadsheetApp.Direction.DOWN).getRow();
const nagoyaRow = sheet.getRange(1, 7).getNextDataCell(SpreadsheetApp.Direction.DOWN).getRow();
if (shiten == '大阪') {
sheet.getRange(oosakaRow+1, 4).setValue(meigi)
}
else if (shiten == '兵庫') {
sheet.getRange(hyogoRow+1, 5).setValue(meigi)
}
else if (shiten == '東京') {
sheet.getRange(tokyoRow+1, 6).setValue(meigi)
}
else if (shiten == '名古屋') {
sheet.getRange(nagoyaRow+1, 7).setValue(meigi)
}
}
}
2.指定の支店を見つける
前回の記事では、関数のMATCHのように、「その数字を探し出す」という手法を取りました。
それでもいいのですが、今回は初めから想定が決まってますし、量も少ないので、単純な条件設定で対応してみました。
大阪の時 ⇒ こうする
兵庫の時 ⇒ こうする
東京の時 ⇒ こうする
名古屋の時 ⇒ こうする
という条件分岐です。
if,else if
if (【支店が】 == '大阪') {
sheet.getRange(【一番下】, 4).setValue(【名義】)
}
else if (shiten == '兵庫') {
sheet.getRange(【一番下】, 5).setValue(【名義】)
}
else if (shiten == '東京') {
sheet.getRange(【一番下】, 6).setValue(【名義】)
}
else if (shiten == '名古屋') {
sheet.getRange(【一番下】, 7).setValue(【名義】)
}
}
このような表現で簡素化して条件分けしました。
3.その列の一番下をさがす
こちらはとりあえずは覚えましょう。
const oosakaRow =
sheet.getRange(1,4) :(1,4)=「D1」を起点に、
.getNextDataCell :次にデータの入ったセルを探す
(SpreadsheetApp.Direction.DOWN):探す方向は下向け
.getRow(); :そのセルの行番号を取得する
という意味合いです。ですので、ここで取得できる値は、「入力したいセルの一つ上」となりますね。
先ほどのif else にいれている「一番下」の指定には、+1をする必要があります。
まとめ
「一番下」を自動取得する。
この方法を学ぶと、できることの範囲が一気に広がります。
基礎編なので、繰り返しの範囲も「3-15」と規定してます。
実用だと上限があるとつかいにくいですよね。
今回の基本を発展させれば
1.名義以外にも金額や日付も入れたい
⇒ 項目追加で可能
2.支店を増やしても対応できるようにする
⇒ 前回の「serch」のようなプログラムを組み込む
3.繰返し範囲を入力した範囲にする
⇒ 方法はあります。また今度
4.支店ごとにシートを分ける
⇒ 方法はあります。また今度
のように、拡張性を上げることもできます。