freeeの開発情報ポータルサイト

新卒ビジネス職の人間が、IFTTTを使ってGoogle Homeとfreeeを連携した話

こんにちは、freee株式会社、ビジネス職新卒(2017卒)のgokiです。

普段は、会社の経理や税金計算を支える「会計事務所」に対して、freeeの設定の仕方や運用の仕方についてコンサルティングをさせて頂いてます。

このfreee Developers Blogでは、基本エンジニアが執筆していますが、実は私は大のIT好き。

ちょうど今年のお正月に、最近流行りのGoogle HomeIFTTTを使って「音声入力でfreeeに登録」というものを作ってみて、社内でも好評だったので書かせてもらいます。

「IFTTTと繋げたらこんな方法で経理ができるんじゃないか?」と閃いた方の、少しでも参考になればうれしいです。

目次

IFTTTを使って音声入力でfreeeに入力したかった理由

個人的に2017年は音声入力についてよく耳にする年でした。

今回使用するGoogle Homeだけでなく、AmazonのAlexaやiOSのSiriなど、音声入力が人々の生活に受け入れられて、ITが詳しくない人でも、「OK Google」というと、「あーあれね」というくらいにはなったと思います。

そんな中、私の事業部のマネージャーが「2年後には音声入力で仕事ができるはずだ」と言っておりまして、「あれ?2年後じゃなくてもすぐできるんじゃない?」と思い、取り掛かったのがきっかけです。

実際にやってみた

そもそもfreeeのことを知らない人向けに説明すると、freeeというサービスは会社や個人事業主のためのクラウドの会計サービスです。

いままでオフラインでしかできなかった経理業務が、スマホや遠隔で簡単にできたりすることが特徴です。

そして今回は、IFTTTを使って音声入力でfreeeを入力するという記事です。

と、いうことで

Google Home に「交通費1000円」と喋りかけたら、自動で(旅費交通費1000/現金1000)という会計処理をfreeeにさせたいと思います。

基本的な仕組み

仕組みとしては、「①Google Home →②Google スプレッドシート→③freee」という順番でデータを飛ばしました。

そして①と②の間をIFTTT、②と③の間はGoogleのスクリプト“Google Apps Script(略称GAS)”を使用して、freeeが公開しているAPIを叩いています。

IFTTTから直接freeeに連携できれば良いのですが、IFTTTにfreeeは登録されていません。

そのため、一旦スプレッドシートに音声内容を書き込み、書き込みをトリガーにGASを実行、freeeのAPIを叩くという形としました。

これで、私のような非エンジニアでも、比較的簡単に連携することができます。

IFTTTでGoogle Home とGoogle スプレッドシートの連携

まず、音声入力したデータをスプレッドシートに書き込む仕組みを作ります。 作るにあたって、事前に下記の3点は用意をしておきましょう。

  • Googleアシスタントアプリのインストール
  • Google HomeとGoogleアシスタントの連携
  • IFTTTアカウントの作成

Googleの設定

Google HomeとGoogleアシスタントの連携については、基本的に説明書通り進めれば終わりました。

具体的には、Googleアシスタントのアプリをインストールし、ログイン。

その後Google Homeアプリをインストールし、wifi設定にてGoogle Home を紐づけると、完了です。

IFTTTの設定

あとはIFTTTの設定です。IFTTTにログインしたら「New Applet」よりAppletの新規作成を行います。

Appletのトリガーであるthisの部分は次のように設定します。

  • service→Google Assistant
  • trigger→Say a phrase with a number

最後のtrigger fieldsについてですが、今回やりたいことが

「交通費1000円」と喋りかけたら、自動で(旅費交通費1000/現金1000)という会計処理をfreeeにさせる

ということなので、次の画像のように設定しました

What do you want to sayを「交通費 # 円」、Wath's another way to say itを「旅費交通費 # 円」とする

これで、「交通費○○円」と話しかけたら、○○の部分を別のサービスに渡すことが可能です。

なお、交通費については、人によって「旅費交通費」と言う人もいるため、What's another way to say it? (他の言い方ある?)のところには、旅費交通費も入れておきました。

最後に、レスポンスは「交通費 # 円で登録しました」とし、言語を日本語にして設定完了です。

続いて、thatにあたる部分を作成します。

  • service→Google Sheet
  • action→Update cell in spreadsheet

を選択します。

action fieldsは、「freee音声入力」というBookを指定し、そのシートのA2セルを出力先に指定しました。

また、今回は交通費以外にも「交際費」「消耗品費」はよく使うので、同じ要領でAppletを作成、スプレッドシートへの出力先はB2、C2セルを指定しました。

これで、交通費の場合はA2セル、交際費の場合はB2セル、消耗品費の場合はC2セルに数値が入力されるようになりました。

f:id:g-tani:20180206022514p:plain
交通費以外も同じ要領で登録

ここまでで、「①Google Home →②Google スプレッドシート→③freee」のうち、①→②が完成しました。

次からは②スプレッドシートから③freeeへの入力について説明します。

Google スプレッドシートとfreeeの連携の仕方

freeeは、他サービスとの連携にAPIを公開しています。

そのため、スプレッドシートからGASを使用し、freeeにPOSTするように設定をしましょう。

なお、freeeのヘルプページにはスプレッドシートからAPIを送信する用のサンプルシートがありますので、今回はそちらを使って楽しちゃいました。

support.freee.co.jp

スプレッドシートの設定

まず、ヘルプページ先のシートを開いたら、「ファイル」→「コピー」よりコピーを作成し、音声入力の出力先とするため、Book名を「freee音声入力」に変えます。

このBookの一番左端シートのA2,B2,C2セルは、IFTTT経由で音声入力結果が反映されますので、その受け口となるシート「音声入力」を追加しましょう。

その後は、「使い方」のシートのとおりに初期設定を進め、スプレッドシートとfreeeをOAuth2認証で連携したら初期設定は完了です。

f:id:g-tani:20180206022711p:plain

IFTTTからの書き込みをトリガーに、GASを動かす。

このスプレッドシートでは、Google Apps Script (GAS) を使って「取引入力」というシートに記載した内容を、freeeにPOSTしてくれます。

確認方法としては、メニューの「ツール」→「スクリプトエディタ」を確認すると”freeeメニュー”のスクリプトファイルに freeeMenuDealsPost というPOSTリクエストをしているスクリプトが見つかるかと思います。

そこで、ここからは

「音声入力」のシートに来た情報を、関数で煮るなり焼くなりして「取引入力」のシートに持ってきて、 freeeMenuDealsPost を実行する。

ということをやっていきます。

データを加工する

まず、「音声入力」シートには、交通費か交際費か消耗品かで、どのセルに入力されるかはわかりません。

そこで、A2やらB2やらC2にくる情報を加工します。

私の場合はE2セルに =if(A2<>"","旅費交通費",if(B2<>"","交際費",if(C2<>"","消耗品費",""))) F2セルに =sum(A2:C2) と関数を使って集約するようにしました。※普段Googleスプレッドシートを使わない方は関数の意味はお調べくださいませ

関数によって勘定科目がE2セルに入力されるように設定するスクリーンショット

あとはそのE2,F2データを「取引入力」のシートの「勘定科目」と「金額」に飛ばして(これも関数)準備完了です。

(取引日等の必須項目はtoday関数等で自動で入るようにしておきます)

GASのトリガーを設定する。

GASには、スクリプトの実行のタイミングを設定するトリガー機能があります。

スクリプトエディタ画面の時計マークを押して、「新しいトリガーを設定」から「freeeMenuDealsPost」を「スプレッドシート」から「編集時」として設定します。

トリガー設定画面のスクリーンショット

これで、IFTTT経由でスプレッドシートに情報が書き込まれると、自動でその内容がfreeeへPOSTされる仕組みが完成しました。

あとは、1回POSTするごとに、スプレッドシート側をリセットする必要があるので、スクリプトファイルの「freeeメニュー」の中の

freeeMenuDealsPost のスクリプト内容を

function freeeMenuDealsPost(){
dealsTranscription();
postDeals();  
}

から

function freeeMenuDealsPost(){
  dealsTranscription();
  postDeals();  
  var bk = SpreadsheetApp.getActiveSpreadsheet();
  var ss = bk.getSheetByName("音声入力");
  ss.getRange('A2:c2').clear();
}

に変更しました。

これで終了です。さっそく動かしてみましょう

Google Homeに喋りかけてみる

私「OK Google 交通費1900円」

Google Home「交通費 1900 円で登録しました」

~5秒後~

freeeの画面に交通費1900円が登録されている

できたっ!!!

私「OK Google 消耗品8740円」

Google Home「消耗品 8740 円で登録しました」

~5秒後~

freeeの画面に消耗品費8740円が登録されている

問題なし!

仕訳としてはこんな感じになっていますね。(経理経験者向け)

「仕訳形式プレビュー」に「消耗品費 8,740/現金 8,740」として登録されている

いやー意外と楽だな~

スマホもPCも開かずに、操作できるのがストレスなくて快適です。スマホで入力するより何倍も簡単。

感想

構想自体はずっとあって、お正月暇だったのでやってみたら2時間くらいでできてしまったのが自分でも驚きでした。

そしてなによりも、音声入力なんて実用性ないと思っていたのですが、これがとっても楽。

一人社長なんかは、帰ったらソファーに寝転がって、領収書見ながら「OK Google 交際費3000円」っていうだけで終わる。超便利。

あとは社内の反応でも「細かい手の動きができない人でも入力できる」といった声があって、音声入力って素晴らしいなぁ、と思いました。

エンジニアじゃなくてもHackできる!

今回私が使ったIFTTTとスプレッドシートとfreeeの組み合わせは、いろいろと応用が効くと思いました。

私のような非エンジニアのしかも新卒でも、課題とツールの使い方さえ見つければサービスが作れる。(しかも社内で騒いでもらえる)

面白い時代ですね。

そして、これを「Developers Blogに書いちゃいなよ!」と言ってくれるfreeeという会社は本当に変だと思います!(もちろんいい意味で)

ビジネス職でも最新のサービスやHackが大好きな方、ぜひ一緒に働きましょう!!!

jobs.freee.co.jp

ここまでお付き合いいただき、誠にありがとうございました~