経理業務の中でも、入金消込作業は特に手間がかかる業務のひとつです。売掛金・買掛金のデータをひとつひとつ照合し、手作業で一致する取引を見つけていくのは時間がかかり、ヒューマンエラーのリスクも高まります。ExcelのマクロやRPA(Power Automate Desktopなど)を活用する方法もありますが、それらには設定の手間や処理速度の問題がつきまといます。
以前の記事でもPower Automate Desktopを使って入金消込作業を自動化しましたが、消込自体は完了できても一件づつ処理するため処理速度がネックとなります。
※入金消込の自動化の記事は以下を参照ください。
そこで今回は、Google Apps Script(GAS)を活用して、Googleスプレッドシート上で売掛金と買掛金の自動消込を実現する方法を紹介します。GASを使うことで、ボタン一つで貸借の消込ができ、作業時間を大幅に短縮できます。
1. GASで入金消込を自動化するメリット
GASを使うことで、入金消込業務がどのように効率化されるのか、そのメリットを整理してみましょう。
-
処理スピードの向上:手作業で照合作業を行うよりも圧倒的に速い(数秒で完了)
-
人的ミスの削減:自動的に消込を行うため、入力ミスや照合漏れを防げる
-
取引先マスタ不要:取引先の名前が完全一致しなくても、金額ベースで照合可能
これらのメリットを活かし、実際にGASで消込を行う方法を解説していきます。
2. スプレッドシートの準備
まず、以下のようなフォーマットでGoogleスプレッドシートにデータを入力します。
C列とD列の貸借が一致すればE列のF(フラグ)に●が書かれるような設定です。
このように、借方(売上)と貸方(入金)がそれぞれ別の行に記載されている状態を前提とします。売掛金元帳もしくは買掛金元帳という想定なので、借方と貸方が両方ともゼロという状況は想定しておりません。
3.条件式書式の設定
消込が完了した列については色付きで視覚的にわかるように、条件付き書式を設定しておきます。
表示形式→条件付き書式から設定できます。
4.GASコードの記述
次に、GASを使って自動消込を行うスクリプトを記述します。
拡張機能 → Apps scriptから、コードを記述していきます。
function keshikomi() {
var sheet = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet();
var data = sheet.getDataRange().getValues();
var debitMap = {};
var creditMap = {};
// 借方・貸方をリスト化(フラグなしのみ対象)
for (var i = 1; i < data.length; i++) {
var debit = data[i][2]; // C列 借方金額
var credit = data[i][3]; // D列 貸方金額
var flag = data[i][4]; // E列 フラグ
if (flag === "●") continue; // すでに消込済みならスキップ
if (debit > 0) {
if (!debitMap[debit]) debitMap[debit] = [];
debitMap[debit].push(i);
}
if (credit > 0) {
if (!creditMap[credit]) creditMap[credit] = [];
creditMap[credit].push(i);
}
}
// ペアリング処理
for (var amount in debitMap) {
if (creditMap[amount]) { // 同じ金額が貸方にもあるか
while (debitMap[amount].length > 0 && creditMap[amount].length > 0) {
var debitRow = debitMap[amount].shift();
var creditRow = creditMap[amount].shift();
sheet.getRange(debitRow + 1, 5).setValue("●"); // E列にフラグ
sheet.getRange(creditRow + 1, 5).setValue("●");
}
}
}
Logger.log("消込完了!");
}
5. GASの実行と結果
このスクリプトを実行すると、借方と貸方の金額が一致する取引に●マークが付きます。これにより、消込済みの取引が一目で分かるようになります。
ポイント:
-
完全一致のみを消し込むため、一部合算が必要なケースは手動で処理。たとえば、限会社サンカクの売上が9631+22686=32317なので、すぐ下の入金に一致していると思いますが、消し込まれません。手動での対応が必要です。
-
E列に●がついているものは次回実行時にスキップされるため、部分的な修正も可能です。たとえば、貸借金額は一致しているものの、取引先が一致していないような場合は手動で●の位置を調整し、保存しておけば次回実行時にスキップして処理してくれます。
6.まとめ
本記事では、GASを活用して売掛金・買掛金の入金消込を自動化する方法を紹介しました。これにより、
-
手作業の消込作業を大幅に削減できる
-
処理スピードが向上し、業務効率化につながる
-
誤消込を防ぎつつ、手動修正も可能
といったメリットが得られます。
紙ベースやExcelでの手作業に限界を感じている方は、ぜひこのGASスクリプトを活用してみてください。スプレッドシートと連携することで、経理業務のデジタル化がさらに進み、よりスマートな業務フローを実現できるでしょう。
▼ 役に立ったらブックマークお願いします!
![]() |
現役公認会計士が解説!GASで自動化する経営管理【電子書籍】[ 稲垣 大輔 ] 価格:1980円 |
![]() |
プログラム未経験者でもOK!! 業務効率化/自動化のためのGoogle Apps Script [ 事務職たらこ ] 価格:2420円 |