2
4

More than 1 year has passed since last update.

Chatworkのデータをcsvでバックアップ その2

Posted at

Chatworkのデータをcsvでバックアップしておきたい!

ということで書いたこちらの記事
ChatWorkのデータをcsvバックアップ.ついでにSlackへ・・・

ですが,久しぶりに見たら動きそうにないので少し修正しました.
上の記事はモバイルUA想定で作成しましたが,今回普通にWeb版を開いてそのままで動作するように修正しました.またSlack用にと思っていた処理を除いて,汎用的にcsvでとりあえずバックアップしておきたい用に作成しました.

出力したcsvをうインポート先でうまくできるかは不明なので,整形したりそれぞれ加工する必要はあるかと思います.

やっていることは,ブラウザで読み込んだhtmlの構造をみて,整形し,コンソールに表示しているだけです

手順説明

  1. web版のchatworkを表示してログイン
  2. chrome開発者ツールのコンソールを表示
  3. スクロールしまくってバックアップしたいとこまで読み込む
  4. 以下のjavascriptを開発者ツールのコンソールから実行
  5. コンソールに整形されたデータが出力される & 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();

手でコピペするよりは楽になるかと思います!

2
4
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
4