Chatwork【出力処理】
指定されたメッセージIDに基づいてExcelにメッセージ内容を出力します。本体処理とは別タブ(サブルーチン)にて実施します。
処理概要
本体側で取得した出力対象メッセージ(メッセージID)をExcelシート(行番号:^row)に出力し、^rowを次の行に移します。
サブルーチンの引数と戻り値
本体側から渡される引数は、^str_mid(メッセージID)、^row(Excelシートの行番号)です。
出力処理内では ^str_midを元にメッセージを取得し、Excelの ^row行に出力します。出力後、^rowに 1加算してExcel行を進めます。
呼び出し元へ返す戻り値は、^row(出力後のExcel行番号)です。
操作イメージ
ポイント
- 非表示メッセージは出力せずスキップします。
- メッセージIDは、数字が潰れるのを防ぐため文字として出力します。
- 同じメンバーが続く場合は、メンバー名や日付は省略されます。よって、Excelの1つ前の行から取得するようにします。
- 添付ファイルをダウンロードすると、画面上の表示名と異なる(同じファイル名の場合は連番がふられる)ことがありますので、ダウンロード時にファイル名を取得します。
- G列のリンクには、Excelの「HYPERLINK関数」を使用します。
非表示メッセージのスキップ
hiddenメッセージのところで説明した、class属性に “hiddenMessage"を含むメッセージを出力対象から除外します。
IF文で、現在のメッセージがclass属性に “hiddenMessage"を含む場合は、RETURN文で呼び出し元に戻ります。この場合、Excel行番号 ^rowは呼び出し時と同じ値が返されます。
変数^PreRowの宣言
同一人物が続けて発言した場合に、メンバー名・月日をExcelの前の行から取得します。そのための変数 ^PreRowを宣言します。
^PreRowには、現在のExcel行の、1つ前の行番号が入っています。
メッセージID
メッセージID(形式:_messageId99…99)から、数字部分を取り出して、ExcelシートのA列に出力します。
Excelでは12桁以上の数を入力すると指数表示されるので、先頭に「’」を付けて、文字として出力します。
日時
日時の取得
画面上の日時を変数 ^DateTimeに代入します。
日時の形式は、「99月99日 99:99」となりますが、同一人物が続けて発言した場合は月日は省略され「99:99」となります。
日付の出力
^DateTimeに格納されている日時から、日付を取り出して出力します。
日付と時刻の間には半角スペースが存在するので、指定した文字位置を返す【TYPE:INSTR】を使用して、取り出す文字位置を特定します。
No1 | STR:INSTRを用いて、^DateTimeの値に含まれる半角スペースの文字位置を数値型変数 ^dayに保存します。 |
No2~No3 | ^DateTimeにスペースが含まれるとき(INSTRの結果が1以上)は、STR:LEFTで日付部分を取り出し、変数^Dateに格納します。(LEFTでは、先頭から半角スペースの手前までを取り出しています) |
No4~No5 | ^DateTimeに日付がなくスペースが含まれないとき(INSTRの結果が0)は、変数^PreRowを利用して、Excelの前の行から日付を取得するようにします。 |
No7 | B列に^Dateの値を出力します。 セルの値は、画面から日付を取得できた場合は「99月99日」、画面に日付が存在しない場合は「=B^PreRow」(^PreRowは1つ前の行番号)となります。 |
時刻の出力
【TYPE:MIDDLE】を使用して、日時から時刻部分を取り出します。^dayには、^DateTimeでの半角スペースの文字位置が格納されています。
画面に日付が存在する場合は(99月99日 99:99)、^dayの1つ後ろの文字から5文字を取り出します。日付が存在しない場合は(99:99)、^dayは0ですので1文字目から5文字目までを取り出すことになります。
取り出した時刻を変数 ^Timeに代入し、ExcelシートのC列に出力します。
メンバー
同一人物が続けて発言した場合はメンバーは表示されません。その場合は日付と同様にExcelの前の行から取得するようにします。
No1~No3 | 画面にメンバーが表示されている場合は、変数 ^memberにメンバー名を代入します。 |
No5 | 画面にメンバーが表示されていない場合は、Excelの現在より1つ前の行 ^PreRowから値を持ってくるようにします。 |
No7 | D列に^memberの値を出力します。 セルの値は、画面からメンバー名を取得できた場合にはメンバー名が、取得できなかった場合には「=D^PreRow」(PreRowは1つ前の行)が格納されています。 |
メッセージ
メッセージ内容をExcelシートのE列に出力します。
ファイルのダウンロード
ファイル名をクリックするとダウンロードが始まります。ファイル名はExcelシートのF列に出力します。
同時にダウンロード先のリンクを、Excelの【HYPERLINK関数】を使用してG列に出力します。
ブラウザでファイルをダウンロードすると、すでに同じ名前がある場合は自動的にリネームされるためファイル名が変わります。実際にダウンロードしたファイル名を【TYPE:DW-DIALOG】を使用して取得します。
No1 | 添付ファイルがあるか判定します。 |
No2 | 表示ファイル名をF列に出力します。 |
No3 | ファイル名のラベルをクリックすると、ダウンロードが開始され、ブラウザの「ダウンロードの表示」が表示されます。 |
No4 | 【TYPE:DW-DIALOG】を指定して「ダウンロードの表示」から、実際にダウンロードされるファイル名を取得します。ファイル名は出力値欄に出力されます。 |
No5 | 取得したファイル名を変数 ^nameに代入します。 |
No6 | ^nameの内容をExcelのG列に出力します。ExcelのHYPERLINK関数を使用して、リンク先アドレスを「ダウンロード先フォルダ\ダウンロードしたファイル名」とします。 |
Excel行を進める
一通り出力したら、Excelシートの行番号 ^rowを次の行に進めます。
呼び出し元には戻り値として、更新した^rowの値が返ります。