ネタがどんどん経理に傾いてきてますが、そういう時期なんですね。
さて、ジャパンネット銀行という銀行があります。2000年に開業した日本初のネット専業銀行です。
法人口座の手数料は以下となっています。
ジャパンネット銀行の口座宛であれば金額にかかわらず55円
他行の口座宛であれば、30,000円未満は176円、30,000円以上だと275円
これを Google Apps Script でカスタム関数にしてみました。
カスタム関数
カスタム関数とは、こういうものです。
例えば、2つのセルの合計を求める時には sum
関数というものを使います。
=sum(A1, A2)
この sum
のような関数を自分で作ることができるのが Google Apps Script のカスタム関数です。
ジャパンネット銀行手数料関数
ジャパンネット銀行の手数料を計算する時、判定の材料は2つです
振込先の銀行がジャパンネット銀行か、それ以外か
振込み金額が30,000円未満か、30,000円以上か
Perlだったら、引数を2つ取るサブルーチンにしてこんな感じにしますかねー
sub japannet_fee { my ( $bank, $remittance ) = @_; if ( $bank eq 'japannet' ) { return 55; } if ( $remittance < 30000 ) { return 176; } else { return 275; } }
では、これをそのままカスタム関数にしてみます。
Google Apps Script はJavaScriptなので・・・と言ってもあまりPerlと変わらないっすね。
function japanNetBankFee(bankName, num) { let fee = 0; if (bankName === "ジャパンネット") { return 55; } if (num < 30000) { fee = 176; } else { fee = 275; } return fee; }
ちょっと手直し
コード中に直接、振込み手数料の金額を書いています。
このような数字はマジックナンバーと呼ばれ、避けるべきものとして知られています。
というわけで、定数に置き換えていきましょう。ついでに、ドキュメンテーションコメントも追加します。
/** * ジャパンネット銀行の手数料(同行宛:55円, 他行宛:30000円未満176円、30000円以上275円) * * @param {string} 銀行名 * @param {num} 振込額 * @return {num} 振込手数料 * @customfunction */ function japanNetBankFeeV2(bankName, num) { const FeesBetweenJNB = 55; const FeeOfLessThan30000 = 176; const FeeOf30000OrMore = 275; let fee = 0; if (bankName === "ジャパンネット") { return FeesBetweenJNB; } if (num < 30000) { fee = FeeOfLessThan30000; } else { fee = FeeOf30000OrMore; } return fee; }
さらに、この関数は2つの仕事を持っているのでそれを切り出して・・・って程でもないので、今回はここまで!とします。
補足
来年にはペイペイ銀行になるそうな