2022 cryptactくリプタクト上の残高との突合スクリプト作成

残高スクリプトはこちらでできています。

環境はGASで、【確定申告_暗号資産数量計算シート】で作っています。

2022 確定申告の為。仮想通貨保有残高合計計算スクリプトを作りました。

それとは別に合計を計算したデータとクリプタクト上のデータの突合、差分を作るスクリプトを書きました。

用は人間業では不可能になると思われますので。

確定申告_暗号資産数量計算シートに、中間Dataシートを作成しました。ここに計算結果を出すことにします。

 

元データはマニュアルでコピーします。

 

 

A1:Cryptact_web_貼付説明

メモ内容



A1:Cryptact_web_貼付説明

メモ:

クリプタクトから通貨一覧コピー、
フォーマットは以下
ーーーーーーーーー
1

ネクスト NXT

208.54175065 0.4792 +4.08% 31.9473 99.9356 -6,562
2

デジバイト DGB

82.85082873 1.1262 +0.93% 4.3408 93.3057 -266
3

オミセゴー OMG

66.94169324 137.8163 -0.26% 539.7042 9,225.6551 -26,903

 

 

A2:メモ設定貼付CELL

メモ欄にクリプタクトのWEBからコピペします。

F,G,Hカラム。

計算結果シートから手動でコピペします。

ここまでを元データとしてスクリプトで計算します。

JからNまで:計算した結果を出力します。

J:存在場所:detailのコピー

コイン名:各コインのアルファベットのみ

計算結果残高:合計計算シート上の残高

クリプタクト残高:クリプタクト上の残高

差分:クリプタクト上で誤差としてプラスマイナスする予定の残高。

スクリプトの内容



function onOpen() {//メニュー追加、変更
  var ui = SpreadsheetApp.getUi();           
  var menu = ui.createMenu('追加したメニュー');  
  menu.addItem('計算実行', 'myFunction');   
  menu.addItem('中間データ差分計算', 'totsugoData');   
  menu.addToUi();                            
}

function cryptact_diff_calc_result(){
  var sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("中間Data");
  range = sheet.getRange(2,6,sheet.getLastRow(),3);
  var datas = range.getValues();
  return datas;
}
function totsugoData(){
  var sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("中間Data");
  var range = sheet.getRange(2,1,1,1);
  var data = range.getNote();
  var data_ar1 = data.split("\n");
  var cryptact_mod_out = [];
  for(var i=0;i<data_ar1.length;i++){
    if(i%5=="0.0"){//項目ごと
      var crypt_each_ar = [];
      crypt_each_ar[0]=data_ar1[i].replace("	","");
      var crypt_name_ar = data_ar1[i+2].split(" ");
      crypt_each_ar[1]=crypt_name_ar[crypt_name_ar.length - 1];
      var quantity_ar = data_ar1[i+4].split("	");
      crypt_each_ar[2]=quantity_ar[0];
      cryptact_mod_out.push(crypt_each_ar);
    }

  }
  //クリプタクト残高出力
  var out_range = sheet.getRange(2,2,cryptact_mod_out.length,cryptact_mod_out[0].length);
  out_range.deleteCells(SpreadsheetApp.Dimension.ROWS);
  out_range.setValues(cryptact_mod_out);

  var calc_result_ar = cryptact_diff_calc_result();

  var out_diff_calc_ar = [];
  for(var i=0;i<calc_result_ar.length;i++){
    if(calc_result_ar[i][0] == ""){
      break;
    }
    var match_array = [];
    match_array[0]=calc_result_ar[i][2];
    match_array[1]=calc_result_ar[i][0];
    match_array[2]=parseFloat(calc_result_ar[i][1]);
    for(var k=0;k<cryptact_mod_out.length;k++){
      var cryptact_zandaka = 0;
      if(calc_result_ar[i][0] == cryptact_mod_out[k][1]){
        cryptact_zandaka = cryptact_mod_out[k][2];
        break;
      }
    }
    match_array[3]=cryptact_zandaka.toString().replace(",","");
    match_array[4]=-1 * parseFloat(match_array[3]*1 - match_array[2]*1);
    out_diff_calc_ar.push(match_array);
  }
  //逆にCryptactだけにあるやつを追加
  for(var k=0;k<cryptact_mod_out.length;k++){
    match_flg = 0;
    for(var i=0;i<calc_result_ar.length;i++){
      if(calc_result_ar[i][0] == cryptact_mod_out[k][1]){
        match_flg = 1;
        break;
      }
    }
    if(match_flg == 0){
      var match_array = [];
      match_array[0]="Cryptact上にしかない";
      match_array[1]=cryptact_mod_out[k][1];
      match_array[2]=0;
      match_array[3]=parseFloat(cryptact_mod_out[k][2]);
      match_array[4]=-1 * parseFloat(cryptact_mod_out[k][2]);
      out_diff_calc_ar.push(match_array);
    }
  }

  var out_range = sheet.getRange(2,10,out_diff_calc_ar.length,out_diff_calc_ar[0].length);
  out_range.deleteCells(SpreadsheetApp.Dimension.ROWS);
  out_range.setValues(out_diff_calc_ar);


}


 

合計を計算する時に「中間」と付くやつを除外しないといけない。若干修正。



function myFunction() {
  var sheets = SpreadsheetApp.getActiveSpreadsheet().getSheets();
  sheet_ar = [];
  if (sheets.length > 0){
    for(sheet of sheets){
      if(sheet.getName()=="計算結果"){
      }
      else if(sheet.getName().match("中間")!=null){
      }
      else{
          data = get_sheet_data_merge(sheet.getName());
          for(var i=0;i

 

 

 

 

 

 

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です