Freee API와 GAS를 사용하여 수지의 간이 백업 + 미결제 정보를 Task로 해 보았다.

17096 단어 freeeAPIgas

요지



GAS를 사용하여 뭔가하고 싶다.
=>TaskAPI는 뭐야
  =>이것을 사용하면 미결제 정보를 ToDO에 넣을 수 있을 것 같다
   =>캘린더도 백업으로 할까.

구성




네. 간단하죠?

구현



달력편


let token="アクセストークン"
function backup_unit() {
  var today=new Date()
  var yesterday=new Date(today.setDate(today.getDate() - 1));
var today_re=Utilities.formatDate(today,"JST","YYYY-MM-dd");
var yesterday_re=Utilities.formatDate(yesterday,"JST","YYYY-MM-dd");
var url="https://api.freee.co.jp/api/1/deals?company_id=######&start_issue_date="+today_re+"&end_issue_date="+yesterday_re;
var res= UrlFetchApp.fetch(url, {
    'headers': {
      'Content-Type': 'application/json; charset=UTF-8',
      'Authorization': 'Bearer ' + token,
    },
    'method': 'get',
  });
res=JSON.parse(res)
var list="カテゴリ:金額"
  for(var i=0;i <res.meta.total_count;i++){
    var row=res.deals[i]
list=list+"\n"+row.type+""+row.amount+"|"+row.details[0].description
  }
  var calendarId = 'primary';
  var start = yesterday.toISOString();
  var end = yesterday.toISOString();
  var event = {
    summary: '支出情報',
    description: list,
    start: {
      dateTime: start
    },
    end: {
      dateTime: end
    },
    colorId: 11
  };
  event = Calendar.Events.insert(event, calendarId);
}

기능은 간단하게, 전날의 거래 데이터를 취득해,
그것을 메인 캘린더에 쓰는 (전날의 캘린더에)하고 있습니다.
그리고는 트리거를 하루에 두는 것만으로 완성입니다.

Todo리스트편


let token="#################################"

function countcheck() {
  var today=new Date()
  var today_re=Utilities.formatDate(today,"JST","YYYY-MM-dd")
var url="https://api.freee.co.jp/api/1/deals?company_id=########&status=unsettled&type=expense&start_issue_date="+today_re;
var res= UrlFetchApp.fetch(url, {
    'headers': {
      'Content-Type': 'application/json; charset=UTF-8',
      'Authorization': 'Bearer ' + token,
    },
    'method': 'get',
  });
Logger.log(JSON.parse(res))  
addTask(JSON.parse(res))
}

function startup() {
var today=new Date()
var today_re=Utilities.formatDate(today,"JST","YYYY-MM-dd")
var url="https://api.freee.co.jp/api/1/deals?company_id=###########&status=unsettled&type=expense";
var res= UrlFetchApp.fetch(url, {
    'headers': {
      'Content-Type': 'application/json; charset=UTF-8',
      'Authorization': 'Bearer ' + token,
    },
    'method': 'get',
  });
addTask(JSON.parse(res))
}

let taskListId="##############################"
function addTask(res) {
  for(var i=0;i <res.meta.total_count;i++){
    var row=res.deals[i]
    var task = {
    title: "カテゴリ"+row.type+"/金額"+row.amount+"",
    notes: row.details[0].description
  };
  task = Tasks.Tasks.insert(task, taskListId);
  }
}

function get_tasklist(){
Logger.log(Tasks.Tasklists.list())
}


이쪽도 마찬가지 데이터 취득+기입 조작으로 변함은 없다.
Startup은 처음에만 실행
get_tasklist는 Tasklistid를 얻는 데 사용됩니다.
이쪽도 Checkcount에 트리거를 세트 해 완성입니다.
기호로 데이터 취득 범위 등을 바꾸어 보면 된다고 생각합니다.

주의사항



둘 다 GAS 서비스 항목에 있는 Calender 및 Tasks를 활성화해야 합니다.
이 코드의 이용에 의한 모든 손해 등에 대하여, 당사는 보전하지 않습니다.
이 코드를 사용하는 경우에는 데이터를 보호하는 방법을 생각해 재설계해야 할 점이 있습니다.

여기에서 파생된 앱 고려사항



GAS의 WEB 어플리로서 작성해, 사내 APP로 한다.
=> 사용자 인증 대신 웹 애플리케이션에 액세스하는 사용자에서 실행하는 것이 좋습니다.
차내 사내 API화해 둔다
=> 참고로 내 방에는 간판 같은 느낌으로 최근 거래·신청 정보가 표시되는 태블릿이 있습니다.

결론



GAS의 개발은 편하고 좋다.

좋은 웹페이지 즐겨찾기