詳細画面でのCSV書き出しボタン

詳細画面にボタンを設置し、必要なフィールドの値だけを定められた順番でCSVに出力するボタンを作ろうとしています。
いざ実行してみると文字化けしたファイルになっているので、PCやブラウザなどの設定以外でkintone内のコードで行える対応があれば、教えていただけないでしょうか。

(function() {
  'use strict';
  
  // レコード詳細画面の表示時に実行
  kintone.events.on('app.record.detail.show', function(event) {
    
    if (document.getElementById('ButtonA') !== null) {
      return;
    }
    
    // ボタンの作成
    const ButtonA = document.createElement('button');
    ButtonA.innerHTML = '書き出しパターンA';
    ButtonA.id = 'ButtonA';
    
    // クリックイベント
    ButtonA.onclick = function() {
      
      // 選択したフィールドの値を取得
      var Name = event.record['会社名A'].value;
      var Sales = event.record['営業所'].value;
      var manager = event.record['担当者'].value;
      var postcord = event.record['郵便番号A'].value;
      var address = event.record['住所A'].value;
      var tellnum = event.record['電話番号A'].value;
      
      // CSVフォーマットのデータを作成
      var CSVa = 'A,B,C,D,E,F\n' + 
                 utf8Encode(Name) + ',' + 
                 utf8Encode(Sales) + ',' + 
                 utf8Encode(manager) + ',' + 
                 utf8Encode(postcord) + ',' + 
                 utf8Encode(address) + ',' + 
                 utf8Encode(tellnum);
      
      // CSVをダウンロード
      var blob = new Blob([CSVa], { type: 'text/csv;charset=utf-8' });
      var link = document.createElement('a');
      link.href = window.URL.createObjectURL(blob);
      link.download = 'data.csv';
      link.click();
    };
    
    // ボタンの設置
    kintone.app.record.getHeaderMenuSpaceElement().appendChild(ButtonA);
  });

  // UTF-8エンコード関数
  function utf8Encode(text) {
    return unescape(encodeURIComponent(text));
  }

})();

「いいね!」 1
  // UTF-8エンコード関数
  function utf8Encode(text) {
    return unescape(encodeURIComponent(text));
  }

の関数は不要そうに見えます。

各項目の

utf8Encode(Name) 

の呼び出しも消したら日本語utf-8でcsvをダウンロードできました。

「いいね!」 1
  // UTF-8エンコード関数
  function utf8Encode(text) {
    return unescape(encodeURIComponent(text));
  }

は何をしているのでしょうね?

const sampleField = "日本語"
console.log(sampleField)
console.log(encodeURIComponent(sampleField))
console.log(unescape(encodeURIComponent(sampleField)))
"日本語"
"%E6%97%A5%E6%9C%AC%E8%AA%9E"
"日本語"
「いいね!」 2

返答ありがとうございました。
余計な部分を消してやり直してうまくいきました。 :smile:

「いいね!」 1

このトピックはベストアンサーに選ばれた返信から 3 日が経過したので自動的にクローズされました。新たに返信することはできません。