カテゴリー内の他の記事

レコードのコメント情報をCSVでダウンロードする方法

フォローする

(著者:近本 昌也)

はじめに

2016年5月のアップデートでレコードのコメントに関するAPIが3件追加されました。
これまで扱うことができなかったコメント情報の取得、投稿及び削除が可能となります。(詳細はリンク先をご確認ください。)

今回のサンプルでは レコードコメントの一括取得 のAPIを利用してレコードのコメント情報をCSV形式でダウンロードしてみました。
レコードのコメント機能が有効になっているお好きなアプリでお試しください。

完成イメージ

CSV出力用のボタンの設置と出力対象のコメント一覧

出力されたCSVファイル例

カスタマイズ

以下の3つのステップでJavaScriptカスタマイズを行い、レコードのコメント情報をCSVでダウンロードしてみましょう。

① コメントデータ取得
② CSV出力用にコメントデータのフォーマットを変更
③ ①、②を組み合わせて作成したCSVファイルをローカルにダウンロード

①コメントデータ取得

レコードコメントの一括取得 で一度に取得できるコメントは10件までとなります。
そのため、レコード内のコメントを全件取得するためには再帰処理を入れる必要があります。

参考:Promiseを利用したモダンなアプリの全レコード取得の書き方

②フォーマット変更

次に取得したコメントデータをCSV形式に変換します。

③ダウンロード

ヘッダにボタンを追加し、ファイルをダウンロードします。

応用 レコード一覧画面から全レコードのコメント情報を取得する ※2016/09/21追記

応用編として今度は
  • レコード一覧画面に「CSVでダウンロード」ボタンを配置しダウンロードを可能にする
  • CSVファイルのフィールドにレコード番号を追加する(どのレコードのコメントかを分かるようにする為)
という処理を行ってみました。

完成イメージ

CSV出力用のボタンの設置と出力対象のコメント一覧

CSV出力例

サンプルコード

関連Tips

最後に

今回はレコードコメントの一括取得を使ってコメント情報をエクスポートするカスタマイズ例を紹介させていただきました。
コメント情報がインポート、エクスポートできることでデータの移行やバックアップとしての利用シーンが増えそうです。

このTipsは、2016年5月版で確認したものになります。

記事に関するフィードバック

直接的に記事と関連がないご質問はcybozu developer コミュニティをご活用ください。

Avatar
y.m

こちらのコードをゲストスペースのアプリに記述したのですが、うまく動作しませんでした。(単体のアプリでは動作しました)

40,67行のURL部分をゲストスペースのURLに書き換えれば良いかなと思っていたのですが、記述が間違っていたのか、それ以外にも他に変更を加える部分ってありますでしょうか。

あまりJSに明るくないのでご教授いただければと思います。よろしくお願いいたします。

Avatar
cybozu Development team

uk.m様

おはようございます。
cybozu developer network運営事務局です。

いただいた質問の回答は以下になります。

>40,67行のURL部分をゲストスペースのURLに書き換えれば良いかなと思っていたのですが、記述が間違っていたのか、それ以外にも他に変更を加える部分ってありますでしょうか。

uk.m様のおしゃる通り、今回はゲストスペースのURLを取得する必要がありますので、
40行目のkintone.api('/k/v1/records''GET', params)の部分をkintone.api(kintone.api.url('/k/v1/records', true), 'GET', params)のように第1引数を変更していただくと、
kintone REST APIの実行に必要なゲストスペース用のURIが返されるので、
うまく動作するかと思います。

こちら、再度お試しいただけますでしょうか。

よろしくお願いします。

ーーーーーーーーーーーーーーーー

※参照
kintone REST API リクエスト>URLを取得する
https://developer.cybozu.io/hc/ja/articles/202166310#step2

cybozu Development teamにより編集されました
Avatar
C-POWER

失礼いたします。

投稿したコメントをCSVでダウンロードできないかと思っていたところ、今回の記事を見つけ、

さっそく応用のサンプルコードを、そのまま、アプリ管理>JavaScript / CSSでカスタマイズに入れて見ましたが、

反映されませんでした。「コメントをCSVでダウンロード」のボタンすら表示されません。

サンプルコードということだけあって、どこかの行を変更する必要があるのでしょうか?

ご教示いただれば幸いです。

 

Avatar
cybozu Development team

C-POWER様

お世話になっております。

ご不便をおかけし申し訳ございません。

当サンプルにおいては、特に書き換えの必要な箇所はございません。

応用のサンプルコードの40行目に不具合があり、修正いたしました。

(修正前)kintone.api('/k/v1/records', true), 'GET', params).then(function(resp) {
(修正後)kintone.api(kintone.api.url('/k/v1/records', true), 'GET', params).then(function(resp) {

お手すきの際にご確認いただければと思います。

今後ともよろしくお願い申し上げます。

Avatar
C-POWER管理者

cybozu Development team様

コード修正ありがとうございました。

ボタンが表示されましたが、ボタンをクリックしてもダウンロードされる気配はありませんでした。

これは、レコード番号のフィールドコードが、「records 」になっていないからでしょうか?

var recordId = records[i]['$id']['value']; //レコードID

 

作成したアプリのフォーム設定をみると、レコード番号のフィールドコードがrecoad_noとなっていました。

フォーム設定でrecoad_noをrecordsに書き換えるかでやってみましたが

ボタン後の反応がありませんでした。

 

ブラウザも、IEとgooglechromeで試しましたが、ボタン後の反応がありませんでした。

googlechromeの検証のconsoleでみると、

GET https://●●●●●.cybozu.com/k/v1/records.json?app=20&query=order%20by%20%E3%83%AC%E3%82%B3%E3%83%BC%E3%83%89%E7%95%AA%E5%8F%B7%20asc%20limit%20100%20offset%200 520 (520)

e.send @ index.js:979
  To.DN @ index.js:997
  To @ index.js:185
  fetchRecords @ download.do?contentI1ce9ecdfa&_lc=ja:41
  csv_button.onclick @ download.do?contentIce9ecdfa&_lc=ja:143

と表示されていましたが、知識不足でこれが何を意味しているのかが理解できずにいます。

ご教示頂ければ幸いです。

 

Avatar
cybozu Development team

C-POWER管理者

早速のご確認ありがとうございます。

確かに、レコード番号のフィールドコードを「records」に変更すると、ボタンは表示されるが、反応がないという問題が発生しました。

当方の検証結果は以下のとおりです。

1. レコード番号 フィールド無しの状態: 正常にダウンロードできる

2. レコード番号 フィールドありの状態(フィールドコードはデフォルト): 正常にダウンロードできる

3. レコード番号 フィールドコードを「records」に変更: 問題発生

4. レコード番号 フィールドを削除: 問題発生

5. レコード番号 フィールドを再配置し、フィールドコードを「レコード番号」に変更: 正常にダウンロードできる

 

原因は調査中ですが、回避策としてレコード番号フィールドのフィールドコードを「レコード番号」に変更の上

様子を見ていただけますでしょうか。

ご不便をおかけしますが、よろしくお願いいたします。

Avatar
C-POWER管理者

cybozu Development team様

 

検証して頂き有難うございます。

回避策としてフィールドコードを「レコード番号」に変更したところ、ダウンロードが出来ました。

有難うございます。

 

なお、これ以上のコードのカスタマイズについての投稿はコミュニティで行った方が良いでしょうか?

例:CSVファイルのフィールドにレコード番号ではなく氏名を追加する。フィールドコードは「文字列__1行_」となっています。

例:CSVファイルのフィールドに複数のフィールドを追加する。

Avatar
cybozu Development team

C-POWER管理者様

回避策のご確認をありがとうございます。

 

>なお、これ以上のコードのカスタマイズについての投稿はコミュニティで行った方が良いでしょうか?

>例:CSVファイルのフィールドにレコード番号ではなく氏名を追加する。フィールドコードは「文字列__1行_」となっています。

>例:CSVファイルのフィールドに複数のフィールドを追加する。

 

はい、記事を参考にしたカスタマイズの際の質問は、コミュニティでお願いいたします。

よろしくお願いいたします。

Avatar
C-POWER管理者

cybozu Development team様

 

わかりました。ご教示頂きありがとうございました。

Avatar
lpj

レコード番号のフィールドコードを変更するとダウンロードできないのは、

39行目でフィールドコードを初期値に限定しているためです。

 

したがって、変更できない$idに変更すれば、問題なく動きます。

var params = {app: appId, query: 'order by $id asc limit ' + limit + ' offset ' + offset};

Avatar
cybozu Development team

lpj様

ご指摘ありがとうございます。

確かにクエリ内を$idにしておけば、フィールド変更の場合も動作するため、こちらに修正いたしました。

ログインしてコメントを残してください。