kubell Creator's Note

ビジネスチャット「Chatwork」のエンジニアのブログです。

ビジネスチャット「Chatwork」のエンジニアのブログです。

読者になる

【GASで業務効率化】GoogleドライブにPDFファイルが追加されたらChatworkへ通知する

※2021年9月時点の情報です。今後の仕様変更により利用できなくなる場合もございます。

こんにちは、Chatworkのさかぐち(cw-sakaguchi)です。

「Google Apps Script」を利用して「業務効率化」する手順を不定期に更新しております。

最近、FAXとGoogleドライブを連携できるサービスが増えています。

  • FAXを受信したら、GoogleドライブにPDFデータで保存してペーパレス!
  • 外出時やテレワークでオフィスにいなくても、リアルタイムで確認できる!

ふと「FAXを受信したらChatworkに通知がきたらいいのに」思ったことはありませんか?

今回は「GoogleドライブにPDFファイルが追加されたらChatworkへ通知する仕組み」を作成しようと思います。

※FAXとGoogleドライブの連携手順はこの記事では紹介しておりません。

※Googleドライブの指定したフォルダに追加されるファイル数が多い場合、負荷がかかりエラーになる可能性があります。この仕組を利用する前に、Googleドライブの管理者に運用可否をご相談ください。

目次

Google Apps Scriptとは

gsuite.google.co.jp

Googleが提供しているJavaScriptベースのスクリプト言語です。

インストール作業等は不要でGoogle のサーバーで実行されます。 実行するために必要なものは以下の通りです。

  • Googleアカウント
  • ネットワーク環境
  • ブラウザ

この記事でできること

事前に指定したGoogleドライブのフォルダへPDFファイルが追加されたら、Chatworkにメッセージを送信します。

5分おきに以下の内容のスクリプトを動かします。

  • Googleドライブの指定したフォルダのファイル一覧(PDF指定)を取得
  • 5分以内に登録したPDFファイルの場合、Chatworkへメッセージ送信

手順

Chatwork API Tokenの発行

Chatwork APIを利用してメッセージを送信するため、Chatwork API Tokenを取得します。

以下の手順に沿って発行してください。

APIトークンを発行する

取得した「API Token」はメモ帳などに保存してください(後ほど使います)

ファイル追加時の通知用のグループチャットを作成

GoogleドライブにPDFファイルが追加されたとき、通知メッセージを送信するグループチャットを作成します。

以下の手順に沿って作成してください。

グループチャットを作成する

作成したグループチャットの「ルームID」を取得

作成したグループチャットの「ルームID」を取得します。

以下の手順に沿って取得してください。

ルームIDを確認する

取得した「ルームID」はメモ帳などに保存してください(後ほど使います)

Googleドライブにフォルダ作成

Chatworkに通知メッセージを送信したいファイルを置くフォルダを作成します。

※既にフォルダが存在する場合はこの手順は不要です。

1.画面右上から「ドライブ」をクリック

画面右上から「ドライブ」をクリック

2.フォルダを作成したい場所に移動後、「フォルダ」をクリック

「フォルダ」をクリック

3.新しいフォルダを作成

新しいフォルダを作成

4.「共有」をクリックしフォルダの権限を確認

このフォルダにアクセスするメンバーの権限が設定されているかご確認ください。

「共有」をクリック

Googleドライブの「フォルダID」を取得する

スクリプト内で「フォルダID」を指定する必要があるため、該当フォルダの「フォルダID」を取得します。

URLの赤枠の部分が「フォルダID」となります。

「フォルダID」を取得

https://drive.google.com/drive/folders/[フォルダID]

取得した「フォルダID」はメモ帳などに保存してください(後ほど使います)

Google Apps Scriptの作成

1.「Google Apps Script」をクリック

「Google Apps Script」をクリック

2.左上の「無題のプロジェクト」をクリックし、プロジェクトの名前を設定

プロジェクトの名前を変更

3.最初から記載のある以下のコードは利用しないため削除

function myFunction() {
  
}

4.以下のコードをコピペし、【編集対象】と書かれている部分を修正

// 【編集対象】Chatwork API Token
const CW_TOKEN = 'ここにChatwork APIトークン';
// 【編集対象】通知メッセージを送るグループチャットのルームID
const CW_ROOM_ID = 'ここにルームID';
// 【編集対象】対象のドライブのフォルダID
const FOLDER_ID = 'ここにフォルダID';
// フォルダに新規作成されたファイルがないか確認する間隔(分指定)
const CHECK_MINUTES_TIME = 5;

function myFunction() {

  // アクセス日時を取得(比較用)
  const access_date = Date.now();

  // フォルダ情報を取得
  const folder = DriveApp.getFolderById(FOLDER_ID);
 
  // PDFファイルのファイル情報を取得
  const files = folder.getFilesByType(MimeType.PDF);

  // 取得したファイルの数だけ繰り返す
  while(files.hasNext()){

    var file = files.next();
    var create_date = file.getDateCreated();
    var time_diff = (access_date - create_date.getTime()) / (60 * 1000);

    // 指定された時間内に作成されたファイルか
    if(time_diff < CHECK_MINUTES_TIME){
      // Chatwork送信用のメッセージ作成
      var body = '';
      body += '[info][title]ファイルが追加されました[/title]';
      body += 'ファイル名: ' + file.getName() + '\n';
      body += 'URL: ' + file.getUrl();
      body += '[/info]';
      // Chatworkへ送信
      sendMessage(body);
    }
  }
}

// Chatworkへメッセージ送信
function sendMessage(body) {
  const client = ChatWorkClient.factory({token: CW_TOKEN});
  client.sendMessage({
    room_id: CW_ROOM_ID,
    body: body
  });
}

5.上部のメニューから「プロジェクトを保存」をクリック

プロジェクトを保存

ライブラリの読み込み

Chatworkへメッセージ送信はライブラリ「Chatwork Client for Google Apps Script」を利用します。

1.ライブラリの「+」をクリック

ライブラリの「+」をクリック

2.「スクリプトID」欄に以下のIDを入力後「検索」をクリックし、必要な設定をおこない「追加」をクリック

スクリプトID:
1nf253qsOnZ-RcdcFu1Y2v4pGwTuuDxN5EbuvKEZprBWg764tjwA5fLav

ライブラリ追加

項目 内容
バージョン 最新バージョン(一番大きな数字)
ID 変更なし(ChatWorkClient)

3.「ChatWorkClient」が追加されたら完了

ChatWorkClient追加完了

トリガーの設定

該当のGoogleドライブのフォルダを5分おきにチェックし、新しく追加されたファイルがあったら、Chatworkへ通知するようトリガーを設定します。

1.左側のアイコンから、時計のアイコンにカーソルをあてる

時計のアイコン

2.「トリガー」をクリック

「トリガー」をクリック

3.「トリガーを追加」をクリック

「トリガーを追加」をクリック

4.必要な設定をおこない、「保存」をクリック

「保存」をクリック

項目 内容
時間ベースのトリガーのタイプを選択 分ベースのタイマー
時間の間隔を選択(分) 5分おき

※保存後にポップアップブロックが表示された場合は「許可」してください。

ポップアップブロック

5.新しい画面が立ち上がるので、自分のアカウントをクリック

アカウントの選択

6.「許可」をクリックし、画面が自動で閉じるのを待つ

許可をクリック

7.1行追加されたら完了

1行追加されたら完了

動作確認

GoogleドライブのフォルダにPDFファイルを追加

GoogleドライブにPDFファイルを追加

Chatworkに通知メッセージが送られた!

Chatworkにメッセージが送られた!

まとめ

いかがでしたでしょうか?

FAX受信時以外にも

  • 社員がGoogleドライブのフォルダに領収書を登録すると、経理部へ通知が飛ぶ
  • お客さまからFAXで発注書が届いたら、社内の注文チャットへ通知が飛ぶ

など、アイデア次第で複数の場面で利用できると思います!

それでは、よいGAS生活を〜

※プログラムの書き方など、具体的な実装方法については「サポート対象外」となります。