2

Google カレンダー API v3 と JavaScript を使用して、ユーザーがイベントを認証してクイック追加できるようにしようとしています。認証ボタンが表示されません。私はコーディングに非常に不慣れです。

コンソール:

Uncaught SyntaxError: Unexpected token } test.html:47
Uncaught TypeError: Cannot read property 'qainput' of undefined test.html:62
onload test.html:62

html ファイル:

<html>
  <head>
    <meta charset='utf-8' />
    <style>
      #info {
        border: 0px solid black;
        padding: 0.25em;
        margin: 0.5em 0;
      }
    </style>
    <script type="text/javascript"> 
      var apiKey = 'AIzaSyDcbjOvAT85hCdVrjgUAqylf_QtxE2Gx60';
      var clientId = '202852486259.apps.googleusercontent.com';
      var scopes = 'https://www.googleapis.com/auth/calendar';
      function handleClientLoad() {
        gapi.client.setApiKey(apiKey);
        window.setTimeout(checkAuth,1);
      }

      function checkAuth() {
        gapi.auth.authorize({client_id: clientId, scope: scopes, immediate: true}, handleAuthResult);
      }


      function handleAuthResult(authResult) {
        var authorizeButton = document.getElementById('authorize-button');
        if (authResult) {
          authorizeButton.style.visibility = 'hidden';
          makeApiCall();
        } else {
          authorizeButton.style.visibility = '';
          authorizeButton.onclick = handleAuthClick;
        }
      }

      function handleAuthClick(event) {
        gapi.auth.authorize({client_id: clientId, scope: scopes, immediate: false}, handleAuthResult);
        return false;
      }

      function makeRpcRequest() {
        var qatext = document.qaform.qainput.value;
        var request = gapi.client.calendar.events.quick_add({
          'calendarId': 'primary',
          'text': +qatext+
        });
        request.execute(writeResponse);
      }

      function writeResponse(response) {
        console.log(response);
        var name = response.summary;
        var infoDiv = document.getElementById('info');
        var infoMsg = document.createElement('P');
        infoMsg.appendChild(document.createTextNode(+ name' sucessfully created!'));
        infoDiv.appendChild(infoMsg);
      }
    </script>
    <script src="https://apis.google.com/js/client.js?onload=handleClientLoad"></script>
  </head>
  <body onload="document.qaform.qainput.focus();">
    <button id="authorize-button" style="visibility: hidden">Authorize to Use QuickAdd</button>
    <form id="qaform">
    <input placeholder='QuickAdd' name='qainput' />
    <button id="rpc" onclick="makeRpcRequest();">Add</button>
    </form>
    <div id="info"></div>
  </body>
</html>
4

1 に答える 1

1

数週間経ったので、おそらく答えが見つかりましたが、最近、基本的に同じコードを使用して同じ問題が発生していました。Googleコンソールの「サービス」でGoogleカレンダーをアクティブにしていませんでした。すべてのコンソール設定が正しくない場合、「承認」ボタンは非表示のままです (デフォルトでは非表示になっています)。すべての設定が正しくなり、スクリプトが API と適切に通信するようになると、承認ボタンが表示され、ボタンをクリックしてイベントを追加し、応答を書き込むことができます。

于 2012-06-05T01:50:40.273 に答える