【2022年11月】Myfans(ファンサイト)の売上を自動で仕訳る方法。エロの仕訳はこうすればいい!【スプレッドシート仕訳データ配布あり】

読了時間目安: 3

売上が上がってきたから確定申告も視野に入ってきたで・・・

やってみたら難しくないので一緒にやってみよう!

この記事が向いている方
  • 確定申告を自分でしようと思っている
  • 仕訳方法がわからない
  • そもそも何がわからないかがわからない

用意するもの

これから仕訳をするにあたり、必要なツールは以下の通りです。

  1. スプレッドシート
  2. CSV
  3. 会計ソフトFreee
  4. やる気

1番必要なのはやる気です・・・

スプレッドシート

今回使用するスプレッドシートはこちらにて無料配布しています。

僕も使用しているデータのため、Myfansなどで仕様変更があった時などはコンスタントに対応すると思います。

※ご自身で使用する際は1度ローカルにデータを別名保存するなどしてからご利用ください。
※スプレッドシートは仕様上クラウド管理しているため入力した内容がそのまま反映されてしまいます。
 別名でローカル保存しない場合、入力内容が他の方に見られてしまう可能性があります。

CSV

Myfansにて該当月の売上高をCSVでエクスポートしましょう。

手順

設定→売上管理→月選択→CSVをダウンロード

会計ソフトFreee

使い慣れている会計ソフトならなんでもいいのですが

僕の場合はFreeeを使って仕訳をしています。

楽天銀行が自動計上できなくなったりとマイナスなこともありましたが、使っていてわかりやすいのでおすすめです。

というか。今回作成する仕訳データはFreeeに取り込ませるために整形しているため

Freeeでしか使用できないと思います。

自分で確定申告をするメリット

僕が考えるメリットはこちらです。

メリット
  • 初期費用0円
  • 税理士費用0円
  • 簿記の知識が身につく
  • いつか税理士にお願いするとき同じ目線で話せる(仕事量と金額に納得できる)

詳しくはこちらの記事をご覧ください。

仕訳データの見方

仕訳用のスプレッドシートは上記のようになっています。

今回はMyfansなので使用するシートは「MF仕訳手順」「MF仕訳CSV」のみです。

ルール

Myfansでは売上高を自分で申請すると申請した日時に登録した口座に振り込まれる仕様ですが

先月くらいまではキャンペーン期間で振込手数料をMyfans側が持ってくれていました。

現在のスプレッドシートも振込手数料を考えていない仕様なので気を付けてください。

また、売上高を計上する際に、「実際に自分の口座に売上高が入金された日」を「発生日」として記録します。

ただし、これは口座振替という機能を使って振替を行うので今回は気にしなくていいです。

せっかく日々の売上高をMyfans側でCSVを用意してくれるのでこちらを使用します。

※手数料を盛り込んだ仕様は後日…

使用する勘定科目

売上を計上するのに使用する勘定科目は以下の2つになります。

勘定科目
収入
  • 売上高
支出
  • 支払手数料

使用する品目

品目
収入
  • プラン購入
  • 単品販売
支出
  • 手数料(ファンサイト)
  • 振込手数料(銀行振り込み)

勘定科目としては2つしか使用していませんが、詳細内容が変わってくるため「品目」を入れることで違いを出すことができます。

一言に「売上高」と言っても「プラン購入の売上」と「単品販売の売上」と内容が変わってきます。

面倒ですがこういう違いも表現しておいたほうが良いです。

スプレッドシートにインポート

前述した方法でMyfansから売上データをCSVでエクスポートしたら、スプレッドシートにCSVをインポートします。

インポート手順

ファイル→インポート→アップロード→ファイルを選択→新しいシートを挿入する

インポート時の注意点

①インポート時にデータを格納するシートを未作成の場合は、「新しいシートを挿入する」を選択します。

②すでに格納シートを作成している場合は、格納するシートをアクティブにした状態で「現在のシートを置換する」を選択しましょう。

①の場合はアップロードしたデータ名で新規シートを作成して格納してくれます。

②の場合はデータ内容のみをアクティブなシートに上書き保存してくれます。

特にこだわりがなければ「新しいシートを挿入する」でOKです。

GASで自動整形

Myfansのデータをインポートすると上記のような内容になっていると思います。

僕の場合は無料プランもあるので金額欄に「0」がありますが、ない方は無視していただいて構いません。

テスト用シートを残しておくので試してみてね

とりあえずデータは赤枠の部分をコピーしておきましょう。

「MF仕訳手順」シートをアクティブにして「名前」のセル部分を選択し貼り付けます。

TIPS

ctrl+vをすると書式などもまとめ貼り付けてしまうため、見た目が変わります。

仕様上問題はありませんが、見た目が気に食わない方はctrl+shift+vをすると見た目がそのままで貼り付けを行えます。

ここまでできたらGASを使って自動で整形します。

GASは「Fill」「行追加」「削除」「科目」の4つに工程を分けてスクリプトを組んでいます。

左から順番にボタンをクリックしていきましょう。

スクリプトの内容とコードは下記をご覧ください。

Fill
function AutoFill() {
  var spreadsheet = SpreadsheetApp.getActive();
  var gl = spreadsheet.getLastRow();//最下行の取得
  spreadsheet.getRange('G6:U6').activate();
  var destinationRange = spreadsheet.getActiveRange().offset(0, 0, gl);
  spreadsheet.getActiveRange().autoFill(destinationRange, SpreadsheetApp.AutoFillSeries.DEFAULT_SERIES);
  spreadsheet.getCurrentCell().offset(0, 0, gl, 1).activate();
};

赤枠の部分を一番下までオートフィルをするスクリプトです。

行追加
function addline() {
  var spread = SpreadsheetApp.getActiveSpreadsheet();
  var sh = spread.getActiveSheet();
  
  var textFinder = sh.createTextFinder('★');//テキストの検索
  var ranges = textFinder.findAll();
  var ncont = ranges.length;//個数の取得
  Logger.log( "個数=",ncont);
  
  for( var i= ranges.length-1; i>=0 ; i--){
    
    Logger.log( "行=",ranges[i].getRow());
    sh.insertRowAfter(ranges[i].getRow());//行の追加
    
  }

}

シート内容を取得して「★」マークがある行の下に新規行を追加するスクリプトです。

削除
function delete_duplication(){
    var sh = SpreadsheetApp.getActiveSpreadsheet();
    var last_row = sh.getLastRow();
    for(var i = 2; i < last_row; i++){
      var range = sh.getRange("D"+ i);
      var value = range.getDisplayValue();
      if(value == "0"){
        var start_row = i;
        var num_row = 1;
        sh.deleteRows(start_row, num_row);
        i = i - 1;
      }
    }
}

金額欄に「0円」表記がある行を見つけ出し行の削除をするスクリプトです。

※無料プランがない場合は無視で大丈夫です。

科目
function copy() {
  var spread = SpreadsheetApp.getActiveSpreadsheet();
  var sh = spread.getActiveSheet();

  var textFinder = sh.createTextFinder('★').matchEntireCell(true);//YESのみテキストの検索
  var Cells = textFinder.findAll();//該当のセルを抽出
  Logger.log('ヒット数 : ' + Cells.length);//個数取得

for(var i=0; i<Cells.length; i++){

    Logger.log('セル位置 :  ' + Cells[i].getA1Notation()) ;
  
    Cells[i].offset(1,-3).activate();
    spread.getCurrentCell().offset(-1, 1).copyTo(spread.getActiveRange(), SpreadsheetApp.CopyPasteType.PASTE_VALUES, false);
    spread.getCurrentCell().offset(0, -1).activate();
    spread.getCurrentCell().setValue('手数料');
  }

}

勘定科目を追加し手数料を金額欄に移行するスクリプトです。

スクリプト実行時の注意点

初回スクリプト実行時に上記のようなダイアログが表示された場合は

スクリプトの実行を承認する必要があります。

下記の手順を見ながら承認しましょう。

承認ってなんや怖いんやが…

要はスクリプトで勝手にデータいじるけどOK?と聞いてます。

①続行する

②ログイン中のGoogleアカウントを選択

③詳細を選択

④安全ではないページに移動

※安全ではないページは若干ビビりますがGAS実行時は必ず聞かれることなので安心してください。

⑤許可

ここまででGASの実行許可が承認されます。

GAS実行

整形前

整形前のデータがGASを実行することでどう変わるのか見ていきましょう。

Fill

「Fill」は行追加列以降の関数が入っているセルをオートフィルしているだけなので見た目は変わりません。

行追加

「行追加」は金額欄の数値が0以上の行の下に新たに行が追加されたのがわかります。

削除

「削除」は金額欄が0の行をまとめて削除していることがわかります。

科目

「科目」は種類列に品目を追加して手数料欄の数値を金額欄に移行しているのがわかります。

Fill

最後にもう1度「Fill」を行うことで最後の行に手数料を追加します。

エラー

スクリプトを実行していて上記のようなエラーが表示された場合、同じスクリプトを実行しなおす必要があります。

これはGoogleの仕様の問題なのですが、データ量が多いとどうしてもこうなってしまいます。

GASで処理を実行できる時間には上限が設定されていて詳しくは忘れましたが5分~6分間以上の連続処理することができません。

そのため、処理はこの時間以内に収める必要があるのですが、めんどくさくてやってません。

行追加以外のスクリプトで停止した場合はそのまま同じ処理をすれば問題ありませんが、行追加スクリプトの場合はそういうわけにもいきません。(★マークのある行を探すので処理済みの行も新たに追加してしまう)

このようなことが起きないように処理は「Fill」から順番かつ1つの処理が終わったら次の処理を行うようにしてください。

スプレッドシートからエクスポート

データの整形が終わったらCSVにエクスポートします。

上記のようにファイル→ダウンロード→カンマ区切り形式を選択しましょう。

CSVに出力する際は「MF仕訳CSV」シートをアクティブにしておきましょう。

Freeeにインポート

Freeeへのインポートも難しいことはありませんが、画像を用意するのが大変なので別記事でご紹介します。

まとめ

やっていることは大したことではないので簡単なのですが、いらないデータを削除したり、行を追加したりなど、地味でめんどうな作業は人が行う必要はありません。

すべてパソコン君に丸投げしてコーヒーでも飲みながら待っていましょう!

Posted by ゆき