kintoneレコードからGoogleカレンダー登録 認証エラーについて

JS初心者です。エラーの原因と解消方法がわからず、どなたかお知恵をいただけますと幸いです。エラーが出てカレンダー同期されず、困っています。

背景・実現したいこと

 kintoneのレコードに登録された情報から、googleカレンダーにイベント作成・更新を行いたいです。

こちらの記事を参考にカスタマイズいたしました。

エラー情報 (開発者ツールのコンソール)

Uncaught (in promise) {error: 'popup_closed_by_user'}error: "popup_closed_by_user"[[Prototype]]: Object

publishEvent  
await in publishEvent (async)        
(anonymous)

alartは何も出てこず、googleアカウントを選択後、画面上何も起こらず終了してしまいます。

 

利用したソースコード

(function() {
  'use strict';

  // API キー
  const api_key = '✖✖✖✖';
  // クライアントID
const client_id = '✖✖✖✖';
  // 認証用URL(読み取り/更新)
  const scope = 'https://www.googleapis.com/auth/calendar https://www.googleapis.com/auth/calendar.events';
  // Discovery Docs
  const discovery_docs = ['https://www.googleapis.com/discovery/v1/apis/calendar/v3/rest'];

  // APIクライアントライブラリの初期化とサインイン
  function initClient() {
    gapi.client.init({
      'apiKey': api_key,
      'discoveryDocs': discovery_docs,
      'clientId': client_id,
      'scope': scope
    }, (error) => {
      alert('Googleへの認証に失敗しました。: ' + error);
    });
  }

  // APIクライアントとOAuth2ライブラリのロード
  gapi.load('client:auth2', initClient);

  // レコード詳細画面の表示後イベント
  kintone.events.on('app.record.detail.show', (event) => {
    // 増殖バグ回避
    if (document.getElementById('publish_button') !== null) {
      return event;
    }
    // 画面下部にボタンを設置
    const publishButton = document.createElement('button');
    publishButton.id = 'publish_button';
    publishButton.innerHTML = 'Googleカレンダー公開する';
    publishButton.className = 'button-simple-cybozu geo-search-btn';
    publishButton.style = 'margin-top: 30px; margin-left: 10px;';
    publishButton.addEventListener('click', () => {
      publishEvent();
    });
    kintone.app.record.getSpaceElement('publish_button_space').appendChild(publishButton);
    return event;
  });

  kintone.events.on(['app.record.create.show', 'app.record.edit.show'], (event) => {
    // フィールドを編集不可へ
    event.record.event_id.disabled = true;
    return event;
  });

  async function publishEvent() {
    // レコードのデータの取得
    const record = kintone.app.record.get().record;
    if (record) {
      // Google認証済みのチェック
      if (!gapi.auth2.getAuthInstance().isSignedIn.get()) {
        // Google認証の呼び出し
        await gapi.auth2.getAuthInstance().signIn();
      }
      // API リクエスト
      // リクエストパラメータの設定
      const params = {
        // イベントのタイトル
        'summary': record.event_name.value,
        'calendar_id': record.calendar_id.value,
        'start': {
          // 開始日・時刻
          'dateTime': record.SERVICE_TRADE_DATE.value,
          'timeZone': 'Asia/Tokyo'
        },
        'end': {
          // 終了日・時刻
          'dateTime': record.接客終了日時.value,
          'timeZone': 'Asia/Tokyo'
        },
        // 場所の指定
        //        'location': record.event_location.value,
        'attendees': (record.担当営業メールアドレス.value?[{
        // ゲストの追加
          'email': record.担当営業メールアドレス.value
          }]:[]),
        // イベントの説明
        'description': record.event_description.value
        };
      let request;
      // リクエストメソッドとパラメータの設定
      if (record.event_id.value) { // 公開済みイベントを更新
        request = gapi.client.calendar.events.update(
          {
            'calendarId': record.calendar_id.value,
            'eventId': record.event_id.value,
            'resource': params
          });
      } else { // 未公開のイベントを追加
        request = gapi.client.calendar.events.insert(
          {
            'calendarId': record.calendar_id.value,
            'resource': params
          });
      }
      // Googleカレンダーへのイベント登録の実行
      request.execute((resp) => {
        if (resp.error) {
          alert('イベントの登録に失敗しました。' + resp.error.message);
        } else {
          const body = {
            'app': kintone.app.getId(),
            'id': record.$id.value,
            'record': {
              'event_id': {
                'value': resp.result.id
              }
            }
          };
          return kintone.api(kintone.api.url('/k/v1/record', true), 'PUT', body).then((success) => {
            alert('カレンダーにイベントを登録しました。');
            location.reload();
          }).catch((error) => {
            alert('Google イベントIDの登録に失敗しました。' + error);
          });
        }
        return true;
      }, (error) => {
        alert('Google イベントIDの登録に失敗しました。' + error);
      });
    }
  }
})();

「JS初心者です」って出だしから不安しかないですがチュートリアルとか一通りやられました?
最近リニューアルされたみたいなので一通りやってみてください。
kintoneのカスタマイズするなら、JSだけじゃなくてkintoneの各種APIも勉強しないとだめですよ。
https://cybozu.dev/ja/tutorials/getting-started/

さて、解決方法ですが、参考にされた記事の、公式さんの↓こちらのコメントを確認してみてください。

https://cybozudev.zendesk.com/hc/ja/articles/115005646066/comments/13638557232537

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