Chatworkのデータをcsvでバックアップしておきたい!
ということで書いたこちらの記事
ChatWorkのデータをcsvバックアップ.ついでにSlackへ・・・
ですが,久しぶりに見たら動きそうにないので少し修正しました.
上の記事はモバイルUA想定で作成しましたが,今回普通にWeb版を開いてそのままで動作するように修正しました.またSlack用にと思っていた処理を除いて,汎用的にcsvでとりあえずバックアップしておきたい用に作成しました.
出力したcsvをうインポート先でうまくできるかは不明なので,整形したりそれぞれ加工する必要はあるかと思います.
やっていることは,ブラウザで読み込んだhtmlの構造をみて,整形し,コンソールに表示しているだけです
手順説明
- web版のchatworkを表示してログイン
- chrome開発者ツールのコンソールを表示
- スクロールしまくってバックアップしたいとこまで読み込む
- 以下のjavascriptを開発者ツールのコンソールから実行
- コンソールに整形されたデータが出力される & backup.csvがダウンロードされる
こちらを開発者ツールのコンソールにコピペしてエンターキーを押してください!
↓↓↓↓↓
//出力用の配列
let arr = [
['timeStamp', 'user', 'text']
]
let cachDate;
let cashUser;
//タイムラインのチャット部分を取得し,投稿の数だけループ
$('#_timeLine').find('._message').each((idx, item) => {
//この変数に一行分(一投稿)のデータを入れていきます
let field = []
//日付を抜き出して挿入
if ($(item).find('._timeStamp').length > 0) {
var t = $(item).find('._timeStamp').text().trim();
field.push( '"'+ t +'"' );
} else {
field.push('');
}
//ユーザー名を挿入.連続投稿はユーザー名が無いパターンがあるので前投稿のキャッシュで埋める
if ($(item).find('._speakerName').length > 0) {
var name = $(item).find('._speakerName').text();
if(name===''){
field.push( '"' + cashUser +'"' );
}
else{
field.push( '"' + name +'"' );
cashUser = name;
}
}
else {
field.push( '"' + cashUser +'"' );
}
//本文を抜き出して挿入
const message = $(item).find('pre').text().replace(/(\r\n|\n|\r)/g, "");
field.push( '"'+ message +'"' );
arr.push(field)
});
//コンソール出力&csv出力用に整形
let csvString = '';
arr.forEach((value) => {
const arrString = value[0] + ',' + value[1] + ',' + value[2] + ',' + value[3];
console.log( arrString );
csvString += arrString + "\n";
});
//csv出力
const blob =new Blob([csvString],{type:"text/csv"});
const link =document.createElement('a');
link.href = URL.createObjectURL(blob);
link.download ="backup.csv";
link.click();
手でコピペするよりは楽になるかと思います!