動画で学ぶ freee会計 API × Google Apps Script 連携

このページでは、初学者向けに、freee会計APIと「 Google Apps Script」を連携して、Google スプレッドシートにデータを出力するまでを動画を使いながら学びます。

再生リスト

準備するもの

Googleスプレッドシートを使うためのGoogleアカウントをご準備ください。

1. Googleスプレッドシートの動作確認

この動画では、freee会計 API と連携するための Googleスプレッドシートを準備し、Google Apps Scriptが動作するかどうかを確認します。

この動画内で利用しているコードは以下です。

function myFunction() {
  Logger.log("今からメッセージを出力します");
  Browser.msgBox("I’m freee");
  Logger.log("メッセージを出力しました");
  const Sheet = SpreadsheetApp.getActiveSheet();
  Sheet.getRange(1,2).setValue("ここに値を表示");
}

2. Google OAuth 2.0 クライアントIDの登録

この動画では、freee会計 API の操作に必要な認可手順「OAuth 2.0」を使えるようにするための設定を行います。

3. Google スプレッドシートの動作確認

この動画では、Google スプレッドシートとfreee会計APIを連携し、事業所のIDを取得するまでを行います。

この動画内で利用しているコードは以下です。

const Client_ID = '「Client ID」';
const Client_Secret = '「Client Secret」';
function showAuth() {
  const service = getService();
  const authorizationUrl = service.getAuthorizationUrl();
  Logger.log(authorizationUrl);
}
function getService() {
  return OAuth2.createService('freee')
  .setAuthorizationBaseUrl('https://accounts.secure.freee.co.jp/public_api/authorize')
  .setTokenUrl('https://accounts.secure.freee.co.jp/public_api/token')
  .setClientId(Client_ID)
  .setClientSecret(Client_Secret)
  .setCallbackFunction('authCallback')
  .setPropertyStore(PropertiesService.getUserProperties())
}
function authCallback(request) {
  const service = getService();
  const isAuthorized = service.handleCallback(request);
  if (isAuthorized){
    return HtmlService.createHtmlOutput('認証が成功したのでタブを閉じてください');
  } else {
    return HtmlService.createHtmlOutput('認証に失敗しています');
  }
}
function getJigyousho() {
  const accessToken = getService().getAccessToken();
  const requestUrl = 'https://api.freee.co.jp/api/1/companies';
  const params = {
    method: 'get',
    headers:{'Authorization':'Bearer ' + accessToken}
  };
  const response = UrlFetchApp.fetch(requestUrl, params);
  Logger.log(response);
  const Sheets = SpreadsheetApp.getActiveSheet();
  Sheets.getRange(1,2).setValue(JSON.parse(response).companies[0].id);
}