Log.d(myLife);

プログラミングを中心に趣味など。

8月末時点での資産状況

Total損益【21.54%】

コード 銘柄名 保有株数 取得価額 現在価額 評価損益 評価損益率
1449 FUJIジャパン 100 334 553 ¥21,900 65.57%
1476 iSJリート 6 1894 2,143 ¥1,494 13.15%
2353 日本駐車場開発 100 160 168 ¥800 5.00%
6099 エラン 100 1673 1,707 ¥3,400 2.03%
8591 オリックス 100 1565 1,569.00 ¥400 0.26%
8818 京阪神ビルディング 100 894 1,251 ¥35,700 39.93%
現金 確定利益 ¥110,200
Ticker 株数 取得価額 株価(9/1) 評価損益 損益率
VTI 10 130.81 149.04 $182.30 13.94%
VDC 2 144.34 154.7 $20.72 7.18%
DIS 6 144.44 137.26 -$43.08 -4.97%
GOOG 0.22333 1196.61 1188.1 -$1.90 -0.71%
AMZN 0.19875 1922.72 1776.29 -$29.10 -7.62%
V 8 162.47 180.02 $146.80 11.29%

やりたいこと

メモしておかないと忘れてしまうのでここに一覧表示する。

やりたいこと

  • サ活(サウナ)
  • 個人サービス開発
  • 読書(月4冊目標)
  • 筋トレ(週3)
  • ストレッチ(風呂上がり後)
  • ラジオ体操(起床・水分摂取後)
  • 投資の運用成績の月次レポート作成(自分用)
  • 月次損益計算書(支出管理)

【GAS】Trelloで日報記録

会社で書いている日報とは別に、個人で日報(日記)として毎日記録をつけています。 記録先としてはDay oneなどの日記アプリではなく、Googleカレンダーを利用しています。

定期的な予定として1日の終わりに日報記入の時間を入れています。


予定画面


予定詳細画面

説明欄に日報の内容を記入していきます。 今はそのまま平文を記入していますが、markdown形式で書いておいて、Trelloに登録した時にMarkdownが反映されるかも試してみたいです。


実装

TrelloからBoardId, ListId, LabelIdを取得するコードは割愛。 一点、躓いたポイントとしては、Trelloからの返却値がJSONであることを忘れていて、なかなか出力できないなというケアレスミスが発生。

下記のコードに加えて、GASのトリガーで日記記入の翌日に起動するように設定すればOK

Code

Trello操作関連

var prop = PropertiesService.getSctiptProperties().getProperties();
var key = prop.TRELLO_KEY;
var token = prop.TRELLO_TOKEN;
var username = prop.TRELLO_USER;
var baseURL = 'https://trello.com/1/';

// リスト追加関数
function addList(payload) {
  var boardId = 'id';
  var url = baseUrl + '/boards/' + boardId + '/lists/?key=' + key + '&token=' + token;
  var options = {
    'method' : 'post',
    'muteHttpExceptions' : true,
    'payload' : payload
  }
  var result = UrlFetchApp.fetch(url, options);
  return result;
}

// カード追加関数
function addCard(payload) {
  var url = baseUrl + '/cards/?key=' + key + '&token=' + token;
  var options = {
    'method' : 'post',
    'muteHttpExceptions' : true,
    'payload' : payload
  }
  UrlFetchApp.fetch(url, options);
}

AddTrello.gs

function addTrello() {
    var cal = CalendarApp.getCalendarById('id');
    
    var yest = new Date();
    yest.setDate(yest.getDate() - 1);
    var option = {
        search : '日報'
    };
    var events = cal.getEventsForDay(yest, option);
    var result = new Array();
    for (var i in events) {
        var title = events[i].getTitle();
        var desc = events[i].getDescription();
        if (title === '日報') {
            result = [yest, desc];
        }
    }
    
    var ss = SpreadsheetApp.openById('id').getSheetByName('name');
    // crD = currentDay, crM = currentMonth
    var crD = yest.getDate();
    var crM = yest.getMonth() + 1;
    // ssM = SpreadSheetMonth(命名は適当。スプレッドシートにMMを記録) 
    var ssM = sh.getRange('B1').getValue();
    
    if (crM == ssM + 1) {
        if (crD == 1) {
            var payload = {
                'name' : crM + '月',
                'pos' : 'top'
            }
            
            var res = addList(payload);
            var text = JSON.parse(res);
            
            // 現在の月, TrelloのリストIdを更新
            sh.getRange('B1').setValue(crM);
            sh.getRange('D1').setValue(text.id);
            
            // 更新記録としてスプレッドシートに残しておく用
            var array = [crM, text.id]
            sh.appendRow(array);
        }
    }
    
    if (result.length !== 2) return;
    if (result[1] == "") {
        var value = '日報が書かれていません';
        result.splice(1, 1, value);
    }
    
    // リストにカードを追加
    var cardTitle = Utilities.formatDate(result[0], 'Asia/Tokyo', 'MM/dd') + " " + title;
    var caedDesc = result[1];
    var listId = sh.getRange('D1').getValue();
    ver payload2 = {
        'name' : cardTitle,
        'desc' : cardDesc,
        'due' : '',
        'idList' : listId,
        'urlSource' : ''
    }
    
    addCard(payload2);
}