コンテンツにスキップ

NetSuite の財務を分析する — 接続から損益計算書まで

約 45 分 · NetSuite への接続、取り込み済みの総勘定元帳、月次の損益計算書、売掛金エージング、スケジュールされた更新

これは、コントローラーや FP&A アナリストが最初の日に進める手順です。最後まで進めると、NetSuite から総勘定元帳を直接取得し、財務諸表のように読める月次損益計算書に変換し、売掛金エージングを作成して、両方をダッシュボードに表示し、全体が自動的に更新されるように設定できます。スプレッドシートへのエクスポートも、手作業での再入力も不要です。数値は NetSuite から取得され、常に最新の状態に保たれます。

接続と取得は一度だけ行い、その後は最も重要な作業に取り組みます。GL の生データの行を、ビジネス担当者が月曜の朝に読む集計に整形する作業です。

NetSuiteSuiteQL の取得GLテーブルグループ化と合計損益計算書
接続して GL を一度取得し、読みやすい財務諸表に整形します。すべてスケジュールで再実行できます。
  • PlaidCloud ワークスペースと、作業用のプロジェクト(必要な場合はトライアルを開始してください)。
  • 動作する NetSuite 接続。 最初に NetSuite への接続の手順を完了してください。NetSuite で OAuth 2.0 と REST Web サービスを有効にし、統合のクライアント ID、証明書 ID、アカウント ID、秘密鍵の PEM を用意する必要があります。ここから始める前に、テストリクエストを送信が成功していることを確認してください。
  • データの整形に SQL は不要です。標準の変換ステップで行います。クエリを書くのは NetSuite からの取得だけで、取得用のクエリはすべて提供されています。このチュートリアルはその内容に基づいているため、NetSuite SuiteQL クエリの例をタブで開いておいてください。

ステップ 1: ワークフローを作成する

Section titled “ステップ 1: ワークフローを作成する”

ワークフローは、データを取得して整形するパイプラインです。

  1. プロジェクトを開き、ワークフロータブに切り替えます。
  2. 新規ワークフローをクリックし、NetSuite Financials などの名前を付けて開きます。

ステップ 2: 総勘定元帳を取得する

Section titled “ステップ 2: 総勘定元帳を取得する”

1 回の SuiteQL クエリで、1 年分の転記アクティビティ(すべての勘定科目、すべての月)を取得できます。これは損益計算書を作成するのに十分で、後で他の財務諸表を作成する場合にも使えます。

  1. RESTリクエストステップを追加します。リクエストタブで、接続に NetSuite 接続を、メソッドに POST を、エンドポイントに /services/rest/query/v1/suiteql を設定します。

  2. 本文に、{"q": "…"} の形式で包んだ次の SuiteQL を入力します。

    SELECT
    TO_CHAR(t.trandate, 'YYYY-MM') AS period,
    a.accttype AS account_type,
    a.acctnumber AS account_number,
    BUILTIN.DF(a.id) AS account_name,
    tal.amount AS amount
    FROM transactionaccountingline tal
    JOIN transaction t ON t.id = tal.transaction
    JOIN account a ON a.id = tal.account
    WHERE tal.posting = 'T'
    AND tal.accountingbook = 1
    AND t.trandate BETWEEN TO_DATE('2026-01-01', 'YYYY-MM-DD')
    AND TO_DATE('2026-12-31', 'YYYY-MM-DD')
    ORDER BY period, a.acctnumber
  3. レスポンスタブで、出力先をテーブルに設定して netsuite_gl という名前を付け、列のタイプを設定します。amount は通貨、それ以外はすべてテキストにします。(SuiteQL は数値と日付をテキストとして返します。タイプを設定することで、amount を合計できるようになります。)

  4. テストリクエストを送信をクリックして実行できることを確認し、ステップを実行します。これで、勘定科目ごと・月ごとに 1 行、符号付きの転記金額を持つ netsuite_gl テーブルができました。

ステップ 3: GL を損益計算書に整形する

Section titled “ステップ 3: GL を損益計算書に整形する”

ここからが分析です。SQL を使わず、ポイント&クリック操作の変換 1 つで行います。損益計算書は GL を集約したものにすぎません。収益と費用の勘定科目を少数の行にグループ化し、収益がプラスで表示されるように符号を反転します。Table Extract ステップのテーブルデータの選択タブとデータフィルタータブで、すべて実行できます。

  1. Table Extract ステップを追加します。ソースに netsuite_gl を、ターゲットに新しいテーブル netsuite_pnl を設定します。

  2. データフィルタータブで、収益と費用の勘定科目だけを残します(貸借対照表の勘定科目は除外します)。 account_type が いずれかに一致 Income、OthIncome、COGS、Expense、OthExpense となるフィルターを追加します。

  3. テーブルデータの選択タブで、集計をクリックして集計を有効にし、ターゲット列を 3 つ設定します。

    • period — ソースからそのままマッピングします。集計はグループ化です。
    • pnl_line — 各勘定科目タイプをレポートの行に変換する式(下記)です。集計はグループ化です。
    • amount — 式 netsuite_gl.amount * -1(符号の反転)です。集計は合計です。

    pnl_line では、その式セルをダブルクリックして次のように入力します(エディターでは、列や条件グループの case 関数をポイント&クリックで選択できます)。

    case(
    (netsuite_gl.account_type.in_(['Income', 'OthIncome']), '1 - Revenue'),
    (netsuite_gl.account_type == 'COGS', '2 - Cost of Goods Sold'),
    (netsuite_gl.account_type.in_(['Expense', 'OthExpense']), '3 - Operating Expenses'),
    )
  4. ステップを実行します。

amount * -1 という式が、唯一の会計上の操作です。借方がプラスの金額の符号を反転することで、収益がプラス、コストがマイナスになり、各月の 3 つの行を合計すると純利益になります。次に、period と pnl_line をグループ化して合計することで、すべての勘定科目が月ごとにこの 3 つの行へ集約されます。式には PlaidCloud のポイント&クリックエディターを使用します。詳しくはデータマッパーの高度な使い方と式のリファレンスを参照してください。

ステップ 4: 財務担当者の目線で読む

Section titled “ステップ 4: 財務担当者の目線で読む”

netsuite_pnl テーブルを開きます。月ごとに 3 つの数値があります。

period pnl_line amount
2026-01 1 - Revenue 486,200.00
2026-01 2 - Cost of Goods Sold -190,540.00
2026-01 3 - Operating Expenses -212,880.00

この表から次の値をそのまま読み取れます。

  • 売上総利益 = 収益 + 売上原価(売上原価はすでにマイナス)→ 486,200 − 190,540 = 295,660。
  • 純利益 = 3 つの行の合計 → 82,780。
  • 売上総利益率(%) = 売上総利益 ÷ 収益 → 約 61%。

最初に行うべきことは照合です。同じ月について NetSuite 自身の損益計算書を実行し、収益と純利益が一致することを確認します。一致しない場合は、ほとんどが範囲の違いです。子会社や通貨のフィルター、または転記期間と取引日付の不一致が原因として考えられます(期間に関する注記を参照)。照合が取れて初めて、このパイプラインを信頼できます。

ステップ 5: 売掛金エージングを作成する

Section titled “ステップ 5: 売掛金エージングを作成する”

最初の日に得られる 2 つ目の成果です。接続、取得、整形という同じ流れで進めます。未回収の売掛金を取得するレシピから始め、各請求書の延滞状況に応じてバケットに分類します。

  1. もう 1 つ RESTリクエストステップを追加し(同じ接続、POST、suiteql エンドポイント)、次の本文を設定します。

    SELECT
    t.tranid AS invoice_number,
    BUILTIN.DF(t.entity) AS customer,
    TO_CHAR(t.trandate, 'YYYY-MM-DD') AS invoice_date,
    TO_CHAR(t.duedate, 'YYYY-MM-DD') AS due_date,
    t.foreigntotal AS invoice_total,
    t.foreignamountunpaid AS amount_unpaid
    FROM transaction t
    WHERE t.type = 'CustInvc'
    AND t.foreignamountunpaid <> 0
    ORDER BY t.tranid

    結果を netsuite_open_ar として取り込み、invoice_total と amount_unpaid は通貨、invoice_date と due_date は日付、それ以外はテキストにします。

  2. netsuite_open_ar を読み取り、新しいテーブル netsuite_ar_aging に出力する Table Extract ステップを追加します。テーブルデータの選択タブで集計をクリックし、ターゲット列を 3 つ設定します。

    • aging_bucket — 各請求書を延滞状況でラベル付けする式(下記)です。集計はグループ化です。
    • invoices — 任意の列(例: invoice_number)です。集計は件数です。
    • balance — amount_unpaid からマッピングします。集計は合計です。

    aging_bucket には次の式を入力します。支払期日からの経過日数(日付から日付を引くと日数になります)を計算し、該当する区分のラベルを付けます。

    case(
    ((func.today() - netsuite_open_ar.due_date) <= 0, '0 - Current'),
    ((func.today() - netsuite_open_ar.due_date) <= 30, '1 - 1-30 days'),
    ((func.today() - netsuite_open_ar.due_date) <= 60, '2 - 31-60 days'),
    ((func.today() - netsuite_open_ar.due_date) <= 90, '3 - 61-90 days'),
    else_='4 - Over 90 days',
    )
  3. 実行します。netsuite_ar_aging を見ると、期限内の金額と 30 日、60 日、90 日以上延滞している金額が 5 行で把握できます。これは、ビジネス担当者が最初に確認する督促向けのビューです。(日付の引き算を行うには、due_date を日付タイプにする必要があります。これは上記の RESTリクエスト ステップのレスポンスタブで設定済みです。)

ステップ 6: ダッシュボードに表示する

Section titled “ステップ 6: ダッシュボードに表示する”

テーブルの数値でも十分ですが、CFO に送るのはグラフです。netsuite_pnl と netsuite_ar_aging を公開し、ダッシュボードを作成するの手順に沿って、次を追加します。

  • period ごとの純利益(または収益)の棒グラフ
  • aging_bucket ごとの売掛金 balance の円グラフまたは棒グラフ

これで、エクスポート不要でワークフローが実行されるたびに更新される、NetSuite の財務ダッシュボードが完成しました。

ステップ 7: 更新をスケジュールする

Section titled “ステップ 7: 更新をスケジュールする”
  1. ワークフロー全体を最初から最後まで一度実行し、すべてのステップが成功していることを確認します。
  2. ワークフローをスケジュールします。決算のサイクルに合わせて月次にするか、売掛金エージングを毎朝最新にしたい場合は毎晩にします。

取得はすべてテーブル全体の置き換えになるため、実行のたびに WHERE 句で定義した範囲が再抽出されます。履歴全体ではなく、必要な範囲(当年のみ、未回収の請求書のみなど)に絞ってください。

空のワークフローから始めて、NetSuite の GL と売掛金のライブデータを取得し、標準の変換ステップ 2 つで月次損益計算書と売掛金エージングに整形しました。SQL は使っていません。さらにダッシュボードに表示し、更新をスケジュールしました。財務チームが行う中核的なレポートの流れが、これで自動化されました。