特定のフォルダーにファイルが保存されたときに、通知がほしいなと思ったのでその仕組みをつくりました。
今から記載するコードとトリガーでできることは、Google Drive内に新規ファイル(本当は15分ごとに発火するトリガーを設定して15分以内に特定のフォルダーにファイル)が追加されたときにチャットワークに以下のような通知を送るということができます。
以下がGASのコードです。
const token = "Chatwork APIトークンを発行して貼り付けてね";
const room_id = Chatworkのroom_idを張り付けてね;
function myFunction() {
var folder = DriveApp.getFolderById('GoogleDriveのフォルダーのidを張り付けてね');
// PDFファイルのファイル情報を取得
var files = folder.getFilesByType(MimeType.PDF);
while(files.hasNext()){
//console.log(files);
var file = files.next();
var create_date = file.getDateCreated();
var time_diff = (Date.now() - create_date.getTime()) / (60 * 1000);
console.log(Date.now());
// 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
});
}
上記のコードで
「 “Chatwork APIトークンを発行して貼り付けてね” 」
「 Chatworkのroom_idを張り付けてね 」
「 ‘GoogleDriveのフォルダーのidを張り付けてね’ 」
の箇所は適宜ご自身のものを張り付けてください。
Chatwork APIトークンを発行の方法をまだ知らない方やChatworkのroom_idってどれと思った方は過去の記事に内に記載しているの参考にしてみてください。
GoogleDriveのフォルダーのidがってどれのことだ?と思った方はこちらの記事を参考にしてみてください。
上記記事の中で、
// PDFファイルのファイル情報を取得
var files = folder.getFilesByType(MimeType.PDF);
と記載しており、フォルダー内のpdfを取得するようにしてますので、フォルダー内のどのタイプも取得する場合は、
var files = folder.getFiles();
に変更すれば、pdfに限らずフォルダー内のファイルを取得できるかと思います(試してないですが………)
それから、トリガーは以下のように設定します。
これで15分おきに、15分以内にフォルダー内に新規追加されたpdfがあれば、チャットワークに通知してくれる仕組みが出来上がります。
15分ではなくもっと早めに設定した方は、トリガーの「時間の間隔選択」を早めるなどして適宜調整してください。
コメント