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

※投稿内容は個人の学習目的の記事であり、所属組織とは一切関係ありません。
　Chatwork公式ドキュメントではございませんので、自己責任でご利用ください。

こんにちわ、さかぐち（[@sakaguchi_mamii](https://twitter.com/sakaguchi_mamii)）です。

今回は[Googleドライブ](https://www.google.com/intl/ja_ALL/drive/)を15分おきにチェックし、PDFファイルが追加されたらChatworkへ通知しようと思います。

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

スクリプト内でどのフォルダのPDFファイルをチェックするのか指定するため、Googleドライブにアクセスし該当フォルダの「フォルダID」を取得します。

<img width="536" alt="スクリーンショット_2020-05-06_08_56_23.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/136275/cfdf089a-0728-5ab2-14aa-0f0626630ed0.png">
https://drive.google.com/drive/folders/[フォルダID]

#APIトークンを取得する

Chatworkにログインし、右上のメニューから「API設定」を選択する。
<img width="210" alt="API設定.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/136275/4ef9404f-037d-c32d-0db9-0109164b6be5.png">

パスワードを入力する。
<img width="978" alt="スクリーンショット 2020-04-29 20.30.31.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/136275/b8b05005-c099-bfc5-e43a-1138192bac9b.png">

APIトークンを取得する。
<img width="976" alt="スクリーンショット_2020-05-04_06_29_18.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/136275/f8b2c206-f4aa-adae-8e1e-0c51d129145b.png">

#ルームIDを取得する

メッセージを送信したいグループチャットのルームIDを取得する。
<img width="222" alt="スクリーンショット_2020-04-29_20_32_05.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/136275/8dc413d1-6fc6-a200-a3a5-c06be7312a43.png">
グループチャットのURL末尾の数字がルームIDとなります。

#ライブラリを読み込む

Chatworkへメッセージ送信は「[Chatwork Client for Google Apps Script](https://github.com/cw-shibuya/chatwork-client-gas)」を利用します。
「Google Apps Script」を開き、ライブラリを追加してください。

プロジェクトキー: M6TcEyniCs1xb3sdXFF_FhI-MNonZQ_sT

<img width="704" alt="スクリーンショット 2020-04-23 11.54.09.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/136275/de7d0248-c75a-5c67-399f-b6cf300ccdfa.png">

#スクリプト
```javascript
const token = 'ChatworkのAPIトークン';
const room_id = 'メッセージを送りたいグループチャットのルームID';

function myFunction() {
  
  var folder = DriveApp.getFolderById('フォルダID');

  // PDFファイルのファイル情報を取得
  var files = folder.getFilesByType(MimeType.PDF);

  while(files.hasNext()){

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

    // 15分以内に作成されたファイルか
    if(time_diff < 15){
      var body = '';
      body += '[info][title]ファイルが追加されました[/title]';
      body += 'ファイル名: ' + file.getName() + '\n';
      body += 'URL: ' + file.getUrl();
      body += '[/info]';
      // Chatworkへ通知
      sendMessage(body);
    }
  }
}

function sendMessage(body) {
  var client = ChatWorkClient.factory({token: token});
  client.sendMessage({
    room_id: room_id,
    body: body
  });
}
```

#トリガーの設定

スクリプトを15分おきに動かすトリガを設定します。

編集＞現在のプロジェクトのトリガー　を選択する。
<img width="271" alt="スクリーンショット_2020-05-03_08_19_20.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/136275/3075bad1-47c4-dd7a-de65-1fcafb8b4c35.png">

「トリガーを追加」をクリックする。
<img width="1440" alt="スクリーンショット_2020-05-06_09_10_19.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/136275/cf3ff5e7-79f4-474a-e0c7-7bad3acc45e7.png">

内容を設定し「保存」をクリックする。
<img width="739" alt="スクリーンショット_2020-05-06_09_12_38.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/136275/3dede60f-7e21-0724-d50f-cc70c4d6e4d2.png">
今回は15分おきにGoogleドライブに新規ファイルの有無を確認したいので以下を設定します。

- 時間ベースのトリガーのタイプを選択： 分ベースのタイマー
- 時間の間隔を選択： 15分おき

#テスト

Googleドライブにファイルをアップロード。
<img width="1135" alt="スクリーンショット 2020-05-06 07.40.23.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/136275/1b68fbc9-8a0a-99bf-f87f-3bb809d310b0.png">

通知がきました！
<img width="771" alt="スクリーンショット 2020-05-06 08.52.00.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/136275/a8ca49b3-7aaf-2f89-0783-ccbcea42fffc.png">

#最後に

FAXで送られた内容をGoogleドライブに格納できるサービスも増えてきました。
FAXの有無をChatworkに通知し、業務効率化を図ってみはいかがでしょうか？

※投稿内容は所属組織とは一切関係ありません。