分早く帰り隊の野口です。メールの連携によって業務を自動化するスクリプトをご紹介します。板橋のしゃれたフレンチレストランで開催したハッカソンです。スクリプトを作成しました。ハッカソンの様子については、開催レポートがありますので、ぜひご参照ください。つのスクリプトを作ります。アプリに登録する」というシナリオです。見積書のフォーマットは、予め定めておきます。見積書のフォーマットにあわせたアプリを一つ作成しておきます。アダプタを使うとほとんど設定いらずで、非常に楽ちんです。添付ファイルを受信するように設定します。メールは一度の受信で複数届くかもしれませんし、同じファイル名の添付ファイルを同時に複数受け取る可能性があるので、連番を振るようにしておきます。登録するスクリプトを呼び出します。いうわけで、親スクリプトの全体像はこうなります。ファイルを取得する際の注意点について説明されています。見積書を読み取るさて、呼び出し先のスクリプトはというと......こうなります。セルを読み取って、予め作成しておいたスクリプト変数にマッピングする、ということを行っています。社名読み取りはこうです。「filepath」というスクリプト変数が、親スクリプトから受け取った入力変数、すなわち取得した添付ファイルの名前が入っている変数です。この要領で、見積書の単独セル(繰り返しのないセル)をそれぞれ読み取っていきます。アダプタには単一セルをまとめて読み取るオペレーションがないため、このようにちょっとスゴいスクリプトが生まれてしまいましたが、中身は単純なので、ちょっとメンドクサイのを我慢すれば難しくはありません。処理の開発に意欲を燃やしているとかいないとか......。それぞれ読み取ったら、最後に肝心の商品一覧の読み取りです。処理を使用して読み取ります。タブで「最初の行は値として取得しない」にチェックを入れるのを忘れないようにしましょう。登録したいのはそれぞれの商品の具体的な内容であって、列名は不要だからです。定義する範囲には、列名が書かれた行を含めないようにしましょう。その場合、上記のチェックは不要です。分早く帰り隊は、ハッカソン当日、これが原因でハマってしまって苦しみました......。皆さんお気をつけください。処理を配置して、接続先のアプリを設定したら、「フィールド一覧の更新」を押すだけでスキーマが自動的にセットされます。あとは、これまで読み取った値をマッピングするだけです。通の見積書ごとに複数ある商品一覧も、繰り返し処理できちんと全件登録できます。範囲から読み取った商品一覧では、すべての行に商品が入力されているとは限らない(あとの方の行は、空のままの可能性がある)ので、「商品コード」が空でない行だけを抽出しているのがポイントです。現在日時ロジックで日付を取得し、レコードの「発行日」に入力しています。サービス登録し、スケジュールトリガーで自動実行するこれで完成です。アドレスに実際にメールを送って、テスト実行してみます。レコードが登録されたことを確認できました。動くことが確認できたので、最後に、このスクリプトをサービスに登録して、スケジュールトリガーで定期的に実行するように設定します。分ごとに実行することにしてみましょう。アプリで確認することができるようになりました。整形し、メールでレポートする」というものです。上で確認するというのも一つの方法です。カスタマイズして、当日登録されたレコードをわかりやすくしてくれました。その一方で、やはりメールでレポートしたい、してほしい、といった要望も、現場では根強かったりもするのではないでしょうか。偉い人が、「kintone、良いとは思うが、私はメールが大好きなのだ。メールで送れ」と命令するかもしれません。そんなシナリオをスクリプトで実現してみます。「その日」まず、「その日」を判別するために「その日」をスクリプト変数に保存しておきます。これは、先ほどのスクリプトでもやっていたことと同じですね。処理でレコードを取得します。接続先のアプリを設定して、「フィールド一覧の更新」を行ったら、簡単な検索クエリを書きます。「発行日」フィールドが「今日の日付」と一致するものだけを取得する、というクエリです。処理を配置して、書き出したい項目を列一覧に追加します。するように設定しておくとよいでしょう。取得した値をマッピングするだけです。それぞれの見積りの概要だけをレポートすることにしました。ロジックを使用して、見積りの総件数を集計しているところがちょっとしたポイントです。集計した値は、やはりスクリプト変数に保存しておきます。ファイルを添付して、送ります。偉井部長に送るという設定です。スクリプト変数を利用して、今日の日付や見積りの総件数を本文に埋め込みます。添付ファイルを指定しておきます。スクリプトの全体像は、こうなります。サービス登録し、スケジュールトリガーで自動実行するスクリプトができたので、テスト実行してみます。すると、ちゃんとメールが届きました!さっきと同様に、スケジュールトリガーで、今度は毎日の終わりに一度だけ、実行することにしましょう。していました)からは、少し時間をあけてあります。取得して集計し、偉い人にメールを送信します。使用してよりリッチなレポートに仕立てるのもよいですし、逆にメールの本文にレポートを埋め込んでしまうというのもありかもしれません。つのスクリプトをご紹介しました。分程度は短縮されるのではないのでしょうか。直に送りつけてしまっていいのか、本当に見積書のフォーマットを統一できるのか(おそらく、多かれ少なかれ業務を変えることになるでしょう)、等々の課題もあり、この状態で今すぐに実運用!というわけにもいかないかもしれません。いえ、ご紹介したような、以下の連携パターンは様々に応用が可能なはずです。