Google Apps Script(GAS)を利用して、kintone(キントーン)とスプレッドシートをAPI連携

何を実現したいのかを書きましょう

Google Apps Script(GAS)を利用して、kintone(キントーン)とスプレッドシートをAPI連携したいです。

発生した問題やエラーメッセージを具体的に書きましょう

下記サイトをもとに作成してみましたがエラーが発生しました。
(アプリのコード、サブドメイン、APIトークン書き換え済み)

【サイト】

【エラー内容】
Exception: https://※.cybozu.com のリクエストに失敗しました(エラー: 401)。サーバー応答の一部: Unauthorized <meta name=“viewport” content="width=device-width,initial-sca…(応答の全文を見るには muteHttpExceptions オプションを使用してください)

実行したコードをコピー&ペーストしましょう

コードをここに入力または貼り付け

//初期設定
const urlDomain = 'ここ1'; //①ドメイン情報
const appId = ここ2; //②ID番号
const apiToken = 'ここ3'; //③APIトークン

//メニュー追加  
function onOpen() {
    SpreadsheetApp.getUi()
        .createMenu("kintone")
        .addItem("kintoneテストより取込む", "getRecords")
        .addToUi();
}

//kintoneテストより取込む
function getRecords() {
  const activeSpreadSheet = SpreadsheetApp.getActiveSpreadsheet(); // 現在のスプレッドシート
  const sheet = activeSpreadSheet.getSheetByName('シート1'); // シート1
  sheet.clear();//前回データをクリア
  const range = sheet.getRange('A1:I1');
  var values = range.setValues([['会社名','部署名','担当者名','郵便番号','TEL','FAX','住所','顧客ランク','メールアドレス']]); //1行目に反映

  // kintoneからデータを取得
  var paramFields = "&fields=$id," + encodeURIComponent("会社名,部署名,担当者名,郵便番号,TEL,FAX,住所,顧客ランク,メールアドレス"); //取り込みたいデータのフィールドコードを指定
  var urlGetRecords = "https://" + urlDomain + ".cybozu.com/k/v1/records.json";
  var url = urlGetRecords + "?app=" + appId + paramFields;
  var res = JSON.parse(UrlFetchApp.fetch(url, {"method": "get","headers": {"X-Cybozu-API-Token": apiToken}}));
  
  // 取得したデータを整形
  var output = [];
  res["records"].forEach(function(record){
    var row = [];
    //先ほど指定したフィールドコードと型を指定
    row.push(record["会社名"].value);
    row.push(record["部署名"].value);
    row.push(record["担当者名"].value);
    row.push(record["郵便番号"].value);
    row.push(record["TEL"].value);
    row.push(record["FAX"].value);
    row.push(record["住所"].value);
    row.push(record["顧客ランク"].value);
    row.push(record["メールアドレス"].value);
    output.push(row);
  });
  
  // スプレッドシートに出力
//初期設定
const urlDomain = 'ここ1'; //①ドメイン情報
const appId = ここ2; //②ID番号
const apiToken = 'ここ3'; //③APIトークン

//メニュー追加  
function onOpen() {
    SpreadsheetApp.getUi()
        .createMenu("kintone")
        .addItem("kintoneテストより取込む", "getRecords")
        .addToUi();
}

//kintoneテストより取込む
function getRecords() {
  const activeSpreadSheet = SpreadsheetApp.getActiveSpreadsheet(); // 現在のスプレッドシート
  const sheet = activeSpreadSheet.getSheetByName('シート1'); // シート1
  sheet.clear();//前回データをクリア
  const range = sheet.getRange('A1:I1');
  var values = range.setValues([['会社名','部署名','担当者名','郵便番号','TEL','FAX','住所','顧客ランク','メールアドレス']]); //1行目に反映

  // kintoneからデータを取得
  var paramFields = "&fields=$id," + encodeURIComponent("会社名,部署名,担当者名,郵便番号,TEL,FAX,住所,顧客ランク,メールアドレス"); //取り込みたいデータのフィールドコードを指定
  var urlGetRecords = "https://" + urlDomain + ".cybozu.com/k/v1/records.json";
  var url = urlGetRecords + "?app=" + appId + paramFields;
  var res = JSON.parse(UrlFetchApp.fetch(url, {"method": "get","headers": {"X-Cybozu-API-Token": apiToken}}));
  
  // 取得したデータを整形
  var output = [];
  res["records"].forEach(function(record){
    var row = [];
    //先ほど指定したフィールドコードと型を指定
    row.push(record["会社名"].value);
    row.push(record["部署名"].value);
    row.push(record["担当者名"].value);
    row.push(record["郵便番号"].value);
    row.push(record["TEL"].value);
    row.push(record["FAX"].value);
    row.push(record["住所"].value);
    row.push(record["顧客ランク"].value);
    row.push(record["メールアドレス"].value);
    output.push(row);
  });
  
  // スプレッドシートに出力
  sheet.getRange(2, 1, output.length, output[0].length).setValues(output);
}