cybozu developer network

カテゴリー内の他の記事

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

(著者:近本 昌也)

はじめに

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

完成イメージ

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

出力されたCSVファイル例

カスタマイズ

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

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

①コメントデータ取得

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

②フォーマット変更

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

③ダウンロード

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

応用 レコード一覧画面から全レコードのコメント情報を取得する

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

完成イメージ

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

CSV出力例

サンプルコード

※ レコード一括取得時にその結果が1万を超える可能性がある場合には、運用・適用中のプログラムのご確認ならびに修正対応の検討をお願いいたします。
詳細はこちらの記事を確認ください。

関連Tips

最後に

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

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

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

記事のコメント欄は記事に対するフィードバックをする場となっております。
右の記事フィードバックのためのガイドを参照してコメントしてください。
記事のリンク切れなど、気になる点がある場合も、こちらのフォームからフィードバックいただけますと幸いです。

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にしておけば、フィールド変更の場合も動作するため、こちらに修正いたしました。

Avatar
DH

初歩的な質問で恐縮です。


この記事のサンプルコードを拝見したいのですが、「サンプルコード」セクションにはそれらしきリンクやボタンが見当たりません。どうすればよいでしょうか?

Avatar
cybozu Development team

DH 様

お世話になっております。cybozu developer network 運営局です。

こちらの環境では「サンプルコード」セクションの真下にソースコードが表示されている状態です。

おそらく、お使いの環境のネットワークで、GitHub.com へのアクセス制限をしていると思われます。

恐れ入りますが、ネットワーク管理者の方に GitHub.com へのアクセス許可を依頼していただくか、
そういった制限のない環境から、当ページへアクセスしていただけないでしょうか。

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

Avatar
DH

なるほど、そういうことだったんですね。

承知いたしました。

もし、アクセス許可が得られない場合やIP制限等で社外環境からのアクセスが困難な場合、この記事のサンプルコードをご提供いただくことなどは可能なのでしょうか?

Avatar
cybozu Development team

DH 様

お世話になっております。cybozu developer network 運営局です。

申し訳ございませんが、サンプルコードの個別提供は行っておりません。
ご理解のほど、よろしくお願いいたします。

Avatar
ST

初めて連絡させて頂きます。
コメントデータのCSVファイルへのダウンロードは出来たのですが
このCSVファイルをインポートする方法はどこかに記載されているのでしょか?
見つける事が出来ず連絡させて頂きました。よろしくお願いします。

Avatar
cybozu Development team

ST 様

お世話になっております。cybozu developer network 運営でございます。

コメントのインポートのような機能を実現するにはレコードコメント投稿のAPIを利用いただくことになるかと存じます。

上記リファレンスやコメントのバックアップ&リストアの記事内にて具体的なご利用方法は記載しておりますのでご参照ください。

恐れ入りますが、こちらのコメント欄は記事内容のフィードバック目的となっているため、

試してみたがわからないなど記事から派生した技術的なご質問はcybozu developer コミュニティをご活用ください。

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

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