Quantcast
Channel: Node.jsタグが付けられた新着記事 - Qiita
Viewing all articles
Browse latest Browse all 8960

【Node.js × LINE WORKS API】監査ログをダウンロードする

$
0
0

すんごいドマイナーな内容なのですが、やりたいことのために必要だったので調べました。( ゚Д゚)

ただ、勉強不足なせいか思ったより時間がかかってしまいました。。。
反省と自身の備忘録的にしっかりとアウトプットしておこうと思います(=_=)

LINE WORKS API

LINE WORKS で提供されている API です。
トーク Bot を操作したり、カレンダーやメールの内容を取ってきたりできます。
今回使用するのは 監査データのダウンロード APIです。

LINE WORKS Developers

実行環境

実行環境は以下の通りです。

  • Node.js
  • Visual Studio Code
  • LINE WORKS API

事前準備

  1. Node.js をインストール
  2. Visual Studio Code をインストール
  3. LINE WORKS Developer Console で認証情報を取得
  4. 各モジュールをインストール
npm install request --save
npm install csv --save

API を Request するコード

download.js
// LINEWORKS 認証情報constCONSTS=require("./consts.js");constrequest=require('request');constcsv=require('csv');constapiId=CONSTS.API_ID;constfeature='log';constservice='message';constserviceId='audit';constendDate=getUnixTime();conststartDate=Number(endDate)-86400;// 24時間前から現在時刻までのログを取得consttenantId=CONSTS.DOMAIN_ID;constdomainId=CONSTS.DOMAIN_ID;constrangeName='tenant';consturi=`https://audit.worksmobile.com/r/${apiId}/audit/v2/${feature}/${service}/logs.csv?apiId=downCsvLog&serviceId=${serviceId}&startDate=${startDate}&endDate=${endDate}&tenantId=${tenantId}&domainId=${domainId}&rangeName=${rangeName}`;constoptions={'method':'GET','url':uri,'headers':{'consumerKey':CONSTS.CONSUMER_KEY,'Authorization':`Bearer ${CONSTS.TOKEN}`}};request(options,function(error,response){if(error)thrownewError(error);csv.parse(response.body,{bom:true,columns:true},(err,data)=>{console.log(data)})});functiongetUnixTime(){constdate=newDate();constnow=date.getTime();returnMath.floor(now/1000);};

コードについて補足

  • 認証情報は CONSTS.js ファイルにまとめてあります。
CONSTS.js
constDOMAIN_ID='xxxxxxxxxxxx';constAPI_ID='xxxxxxxxxxx';constCONSUMER_KEY='xxxxxxxxxxx';constTOKEN='xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx'exports.DOMAIN_ID=DOMAIN_ID;exports.API_ID=API_ID;exports.CONSUMER_KEY=CONSUMER_KEY;exports.TOKEN=TOKEN;
  • 今回はトークログを取得しているので const service = 'message';を指定しています。ログイン状況やメールなどのログも取得できます。詳しくは公式ドキュメントを参照ください。

  • トークログのみ unix timestamp 形式で時間単位の指定が可能なので unix timestamp 形式で指定しています。

  • UNIX time stamp 形式で指定する場合 24時間以内のデータしか取得できません。

  • Request URL、ちょー長いですよね!( ゚Д゚)メンドイ

  • 取得した CSV データには BOM が入っているので csv.parseするときにオプションを指定しています。{ bom: true, columns: true }

おわりに

ここまでお付き合いいただきありがとうございました。

冒頭にも書きましたが、やりたいことがあって・・・
Bot の入っていないトークルームの発言をトリガーにしたいんですよね。
本当は GAS で実装したかったのですが GAS での csv ダウンロードがどうにもうまくできなくて。
GAS は Node.js での実装が終わったら再チャレンジしようと思います。

ではまた!(^^)/

参考にさせていただきましたm(_ _)m

LINE WORKS Developers
Visual Studio Codeをインストールする


Viewing all articles
Browse latest Browse all 8960

Trending Articles