関連レコードのデータのCSV出力

お世話になります。全くの初心者です。
関連レコードデータをCSV出力したいです。
Tipsで下記のsampleコードを見つけて、現在使用しているアプリのフィールドコードに差し替えて使用してみたのですが、ボタンすら作成できません。
※ちなみにここで使用されているsampleアプリをインストールして試したところ、sampleアプリでは動作が確認できています。

現在使用しているアプリではフィールドコードが日本語のため、フィールドコードは全てで囲みました。
実際のフィールドコードに変更しなければいけない箇所は全て変更したつもりです。
以下、置き換えたコードです。
間違っている箇所など、教えていただけないでしょうか。
よろしくお願いいたします。

/*
 * related records sample program
 * Copyright (c) 2014 Cybozu
 *
 * Licensed under the MIT License
*/

(() => {
  'use strict';

  kintone.events.on('app.record.index.show', (event) => {
    const records = event.records;
    const appId = kintone.app.getRelatedRecordsTargetAppId('[名前重複確認]');

    // ボタンの有無をチェック
    if (document.getElementById('btn-export-csv')) {
      return;
    }

    const spaceEl = kintone.app.getHeaderMenuSpaceElement();
    const CSVButtonEl = document.createElement('button');
    CSVButtonEl.textContent = 'CSVファイル出力';
    CSVButtonEl.id = 'btn-export-csv';
    spaceEl.appendChild(CSVButtonEl);

    CSVButtonEl.addEventListener('click', () => {
      getMakeCsv(appId, records).then((resp) => {
        downloadFile(resp);
      });
    });
  });

  // csvデータの作成
  const getMakeCsv = (appId, customerRecords) => {
    // 同じ会社名の関連レコードを取得
    const fetchRelatedRecords = (opt_index, opt_data) => {
      const index = opt_index || 0;
      const data = opt_data || [];
      const customerRecord = customerRecords[index];

      const acompany = customerRecord.[取引先名].value;
      const amanager = customerRecord.[担当者名].value;
      const adepartment = customerRecord.[部署].value;
      const apost = customerRecord.[役職].value;
      const duplication = customerRecord.[重複件数].value;
      const amail = customerRecord.[メールアドレス].value;
      const asubmail = customerRecord.[subメールアドレス].value;
      const aprefectures = customerRecord.[都道府県].value;
      const acity = customerRecord.[市区郡].value;
      const atown = customerRecord.[町名・番地].value;
      const atell = customerRecord.[電話].value;
      const aphone = customerRecord.[携帯].value;
      const asansan = customerRecord.[sansan人物ID].value;

       const query = `[取引先名] = "${[取引先名]}"`; // 会社名をキーに該当関連レコードを取得
      const params = {
        app: appId,
        query: query
      };
      return kintone.api(kintone.api.url('/k/v1/records', true), 'GET', params)
        .then((resp) =>{
          const row = [ [取引先名], [担当者名], [部署], [役職], [重複件数], [メールアドレス], [subメールアドレス], [都道府県], [市区郡], [町名・番地], [電話], [携帯] ,[sansan人物ID] ];
          const relatedRecords = resp.records;
          if (relatedRecords.length > 0) {
            relatedRecords.forEach((relatedRecord) => {
              row.push(relatedRecord.[ユーザー選択].value);
              row.push(relatedRecord.[取引先ID_自動採番].value);
            });
          }
          data.push(row.join(','));
          if (customerRecords.length > index + 1) {
            return fetchRelatedRecords(index + 1, data);
          }
          return data;
        });
    };
    const header ='取引先名', '担当者名', '部署', '役職', '重複件数', 'メールアドレス', 'subメールアドレス', '都道府県', '市区郡', '町名・番地', '電話', '携帯', 'sansan人物ID', '取引先ID_自動採番', `ユーザー選択`].join(',');
    let csvData = [header];

    return new kintone.Promise((resolve, reject) => {
      fetchRelatedRecords().then((resp) => {
        csvData = csvData.concat(resp);
        resolve(csvData);
      });
    });
  };

  // ダウンロード関数
  const downloadFile = (data) => {
    const csv = data.join('\r\n');
    // ファイル名
    const filename = `client_case${getTimeStamp()}.csv`;

    // Blob準備
    const bom = new Uint8Array([0xef, 0xbb, 0xbf]);
    const blob = new Blob([bom, csv], {type: 'text/csv'});

    if (window.navigator.msSaveBlob) {
      window.navigator.msSaveBlob(blob, filename);
    } else {
      const e = new MouseEvent('click', {view: window, bubbles: true, cancelable: true});
      const url = window.URL || window.webkitURL;
      const blobUrl = url.createObjectURL(blob);
      const a = document.createElementNS('http://www.w3.org/1999/xhtml', 'a');
      a.href = blobUrl;
      a.download = filename;
      a.dispatchEvent(e);
    }
  };

  // ファイル名に付与する日付の取得
  const getTimeStamp = () => {
    const d = new Date();
    const YYYY = d.getFullYear();
    let MM = d.getMonth() + 1;
    let DD = d.getDate();
    let hh = d.getHours();
    let mm = d.getMinutes();
    if (MM < 10) {
      MM = `0${MM}`;
    }
    if (DD < 10) {
      DD = `0${DD}`;
    }
    if (hh < 10) {
      hh = `0${hh}`;
    } else if (mm < 10) {
      mm = `0${mm}`;
    }
    return `${YYYY}${MM}${DD}${hh}${mm}`;
  };
})();コードをここに入力または貼り付け
「いいね!」 1

おそらくコンソールみるとエラーが出てるんではないでしょうか?

      const acompany = customerRecord.[取引先名].value;

すくなくともこのあたりのコードですが、下記2つの記述方法で示す必要があります。


ドット記法

      const acompany = customerRecord.取引先名.value;

ブラケット記法(この例自体は厳密にはドット記法とブラケット記法の混在)

      const acompany = customerRecord["取引先名"].value;

日本語だから[] を利用するということではないので、記法についてはしらべてみてください!

「いいね!」 1

ありがとうございます。
本当に感謝いたします(涙

ボタンですが、実はこのsampleコードを見つけて何回か自分なりにコード修正してkintoneに登録しているんですが、1回目だけボタンが作成されたんです。でもその後、ボタン作成箇所以外のコード修正しかしていないのですが、何度やってもボタンが作成されなくなってしまったんです。
プラグインが邪魔してるのかと思い、プラグインは全部無効化して、キャッシュも削除してみたんですが、ボタンが作成されません。適用済みのJavascriptもありません。
他に何か考えられることはありまですしょうか。

ありがとうございます。
調べて勉強します。

デバッグについては下記もぜひよんでみてください
てんそさんのいうとおり適用されてないか、もしくはエラーがでてればそこが糸口になるとおもいます

「いいね!」 1

てんそさん、muraさん、返信いただきありがとうございます。
ユーザー全員に適用にチェックを入れて保存してアプリに反映しています。
デバックを確認したところ、エラーが出ていました。

Uncaught SyntaxError: Unexpected end of input
define.js:1 [AssetView Web-Extension3] Loading define.js
define.js:124 [AssetView Web-Extension3] Loaded define.js
file_upload_cs.js:1 [AssetView Web-Extension3] Loading file_upload_cs.js
file_upload_cs.js:176 [AssetView Web-Extension3] Loaded file_upload_cs.js
80file_upload_cs.js:89 *** mutation type: childList
define.js:1 [AssetView Web-Extension3] Loading define.js
define.js:124 [AssetView Web-Extension3] Loaded define.js
file_upload_cs.js:89 *** mutation type: childList
file_upload_inject_xhr.js:1 [AssetView Web-Extension3] Loading file_upload_inject_xhr.js
file_upload_inject_xhr.js:211 [AssetView Web-Extension3] Loaded file_upload_inject_xhr.js
xhr_injection.js:1 [AssetView Web-Extension3] Loading xhr_injection.js
xhr_injection.js:73 [AssetView Web-Extension3] Loaded xhr_injection.js
2file_upload_cs.js:89 *** mutation type: childList
4file_upload_cs.js:89 *** mutation type: childList

エラーはこの部分ですが、調べてみたら括弧が足りないという意味のようです。コードは全部コピーして貼り付けしたので、漏れてはいないと思うのですが、何かご存知でしたら教えてください。
Uncaught SyntaxError: Unexpected end of input

てんそさん、ありがとうございます。
ご指摘の通りで、無事「CSV出力」のボタンは表示されました。
フィールドコードが一部誤っていたところがあり、そこを修正したところ、
CSVデータを出力することができ、関連レコードの内容も表示されていました!
本当にありがとうございました。
これを機会に少し勉強してみようと思います。

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