Symbol 월렛 잔액을 자동으로 취득・갱신하기

목적



Google 스프레드시트를 이용하여 Symbol 월렛 잔액을 자동으로 취득·갱신한다.

※ 어디까지나 현시점에서의 잔고를 취득할 뿐이므로, 상세한 이력 등을 이용하는 경우 등은
다음 사이트를 사용하는 것이 좋습니다.
  • Symbol 블록체인 탐색기
    htp : // / xp ぉ r. symbo lbぉck 짱. 이오/
  • XEMBook
    htps : // / m 보오 k. 기주 b. 이오 / ㎇ 보오 k /

  • 가정하는 사용자



    여러 지갑을 들고 있는 사람
  • 결제용, 보관용으로 지갑을 나누고 있는 사람
  • 멀티 시그 지갑을 만드는 사람
  • 노드 운영을하는 사람이며 수확 수수료 수익 계정을 전용으로 제공하는 사람
  • Symbol HD 지갑을 사용하는 사람

  • 준비



    스프레드시트 만들기

    이미지와 같은 스프레드시트를 만들어 둡니다.



    Google App Script

    메뉴에서 도구 > 스크립트 편집기를 선택하여 Google App Script를 엽니다.


    구현



    시트 정보 얻기

    스프레드시트의 시트 이름과 값을 검색할 셀의 범위를 지정합니다.
      // 対象のスプレッドシート を設定.
      var sheet = SpreadsheetApp.getActiveSpreadsheet();
      var target_sheet = sheet.getSheetByName('Symbol');
      // セルからアドレスの情報を設定.
      var arr_raw_address = target_sheet.getRange('D7:D10').getValues();
    

    색상을 변경하는 D7:D10 셀에 입력된 정보를 가져옵니다.
    또한 이미지에는 나타나지 않지만 시트의 이름을 기호로 변경합니다.


    Symbol 월렛 정보 얻기

    Symbol의 API 서버에 계정 정보를 요청하는 요청을 던집니다.
    Symbol에서는 xym이 응답의 mosaics 안에 id - amount가 묶인 상태로 저장되어 있기 때문에,
    xym의 id로 검색할 잔액을 지정합니다.

    응답 내용 등 자세한 내용은 문서를 참조하십시오.
    - Catapult REST Endpoints (1.0.0)
    htps : // / cs. symbo lp t t rm. 코 m/sym 보르-오페나피/v1.0.0/
      const id_symbol = '6BED913FA20223F8';
      // ウォレット残高の格納用.
      var arr_amount = []
    
      arr_raw_address.forEach(raw_address=>{
        // アドレスからハイフンを削除する.
        var address = String(raw_address).replace(/-/g, '');
    
        var url = 'http://'
                + 'ngl-dual-005.symbolblockchain.io'
                + ':3000'
                + '/accounts/'
                + address;
    
        // APIを呼び出して、アカウントの情報を取得.
        var response = UrlFetchApp.fetch(url);
        var json=JSON.parse(response.getContentText());
    
        // アカウントの情報から残高を取得.
        if(id_symbol == json.account.mosaics[0].id){
          raw_amount = json.account.mosaics[0].amount;
    
          // 数量を小数点に変換して格納.
          arr_amount.push(new Array(1)
            .fill(Number(raw_amount) / 1000000));
        }
      });
    

    시트 정보 업데이트

    취득한 정보를 시트에 반영합니다.
      // 数量のセルを更新.
      target_sheet.getRange('F7:F10').setValues(arr_amount);
    
      // 更新日時を取得
      var time = Utilities.formatDate(
        new Date(),
        'Asia/Tokyo', 'yyyy/MM/dd HH:mm:ss'
        );
    
      // 日付のセルを更新.
      target_sheet.getRange('D3').setValue(time);
    }
    
    

    색상을 변경하는 F7:F10 및 D3 셀의 정보를 업데이트합니다.


    전체 소스
    function Update_Symbol_Amount() {
      const id_symbol = '6BED913FA20223F8';
    
      // 対象のスプレッドシート を設定.
      var sheet = SpreadsheetApp.getActiveSpreadsheet();
      var target_sheet = sheet.getSheetByName('Symbol');
      // セルからアドレスの情報を設定.
      var arr_raw_address = target_sheet.getRange('D7:D10').getValues();
      // ウォレット残高の格納用.
      var arr_amount = []
    
      arr_raw_address.forEach(raw_address=>{
        // アドレスからハイフンを削除する.
        var address = String(raw_address).replace(/-/g, '');
    
        var url = 'http://'
                + 'ngl-dual-005.symbolblockchain.io'
                + ':3000'
                + '/accounts/'
                + address;
    
        // APIを呼び出して、アカウントの情報を取得.
        var response = UrlFetchApp.fetch(url);
        var json=JSON.parse(response.getContentText());
    
        // アカウントの情報から残高を取得.
        if(id_symbol == json.account.mosaics[0].id){
          raw_amount = json.account.mosaics[0].amount;
    
          // 数量を小数点に変換して格納.
          arr_amount.push(new Array(1)
            .fill(Number(raw_amount) / 1000000));
        }
      });
    
      // 数量のセルを更新.
      target_sheet.getRange('F7:F10').setValues(arr_amount);
    
      // 更新日時を取得
      var time = Utilities.formatDate(
        new Date(),
        'Asia/Tokyo', 'yyyy/MM/dd HH:mm:ss'
        );
    
      // 日付のセルを更新.
      target_sheet.getRange('D3').setValue(time);
    }
    
    

    자동 실행 설정



    Google App Script의 왼쪽 메뉴에서 시계 표시를 선택하여 실행할 트리거를 설정합니다.
    여기에서는 매일 월렛 잔액을 업데이트하도록 설정합니다.



    요약



    API만 실행하면 체인 정보에 액세스할 수 있으므로,
    결과적으로 기호 처리보다 스프레드시트 작업이 더 많아졌습니다.

    또, 서버를 준비하지 않아도 되기 때문에, 스스로 관리하지만 잔고의 갱신이 귀찮다면 이것으로 문제라고 생각합니다.
    트리거를 날마다, 월별로 설정해 두고 이력을 남기는 형태로 해 두면 확정 신고시에 필요한 메모를 잊지 않게 될 것 같다고 생각합니다.

    참조 문서


  • Symbol API
    htps : // / cs. symbo lp t t rm. 코 m/그럼/아피. html #엔 d포인 ts
  • Catapult REST Endpoints (1.0.0)
    htps : // / cs. symbo lp t f rm. 코 m/sym 보르-오페나피/v1.0.0/
  • 좋은 웹페이지 즐겨찾기