sql >> データベース >  >> RDS >> Mysql

GoogleカレンダーAPI:カレンダーの選択/作成?

    誰も答えなかったので、私はGoogle Calendar APIのPHP以外のドキュメント、特に.NETのものと、生のプロトコルを少し調べ始めることにしました。そして、あなたはそれを知らないでしょう...

    .NETのドキュメントにアクセスすると、クールな新しいが記載されています。 機能、特に認証されたユーザー用の新しい非プライマリカレンダーを作成する方法、および非プライマリカレンダーにイベントを追加する方法。

    もちろん、このドキュメントはPHP領域のどこにも表示されておらず、1対1の相関関係はないようです。新しいカレンダーを作成するために、私は最初にいくつかの明白なものを試し、次に壊れて、うまくいくそれほど明白ではない何かを試しました。無線封止の理由が誰も答えを知らなかったが、確かに知りたいということであった場合に備えて、私は共有したいと思いました。

    新しいカレンダーを作成するには:

    これには2つの鍵があります:

    1. カレンダーイベントを追加するには、同じメソッドinsertEvent()を使用する必要があります。

    2. メソッドに投稿URLを設定する必要があります。そうしないと、デフォルトのフィードURLになります。

    この例では、アプリカレンダーがすでに存在するかどうかを確認し、存在しない場合は作成します。

     //Standard creation of the HTTP client
     $gdataCal = new Zend_Gdata_Calendar($client);
    
     //Get list of existing calendars
     $calFeed = $gdataCal->getCalendarListFeed();
    
     //Set this to true by default, only gets set to false if calendar is found
     $noAppCal = true;
    
     //Loop through calendars and check name which is ->title->text
     foreach ($calFeed as $calendar) {
      if($calendar -> title -> text == "App Calendar") {
       $noAppCal = false;
      }
     }
    
     //If name not found, create the calendar
     if($noAppCal) {
    
      // I actually had to guess this method based on Google API's "magic" factory
      $appCal = $gdataCal -> newListEntry();
      // I only set the title, other options like color are available.
      $appCal -> title = $gdataCal-> newTitle("App Calendar"); 
    
      //This is the right URL to post to for new calendars...
      //Notice that the user's info is nowhere in there
      $own_cal = "http://www.google.com/calendar/feeds/default/owncalendars/full";
    
      //And here's the payoff. 
      //Use the insertEvent method, set the second optional var to the right URL
      $gdataCal->insertEvent($appCal, $own_cal);
     }
    

    そして、あなたはそれを持っています。次の目標は、デフォルトのカレンダーではなく、そのカレンダーにイベントを挿入することです。

    非プライマリカレンダーへのイベントの追加

    おそらく推測できる簡単な部分は、次のように、オプションのURLを再度設定する必要があることです:insertEvent($newEvent, $calURL) 、トリッキーな部分はカレンダーのURLを取得することです。 「所有カレンダー」パスとは異なり、特定のカレンダーにはユーザー固有の情報が含まれているだけでなく、何らかのハッシュルックインIDも含まれています。

    コードは次のとおりです:

     //Set up  that loop again to find the new calendar:
     $calFeed = $gdataCal->getCalendarListFeed();
     foreach ($calFeed as $calendar) {
      if($calendar->title->text == "App Calendar")
       //This is the money, you need to use '->content-src'
       //Anything else and you have to manipulate it to get it right. 
       $appCalUrl = $calendar->content->src;
     }
    
     //.......... Some Assumed MySQL query and results .............
    
          while ($event = $result->fetch_assoc()) {
       $title = $event['description'];
    
       //Quick heads up
       //This is a handy way of getting the date/time in one expression.
       $eventStart = date('Y-m-d\TH:i:sP', strtotime($event['start']));
       $eventEnd = date('Y-m-d\TH:i:sP', strtotime($event['end']));
    
       $newEvent = $gdataCal->newEventEntry();
       $newEvent->title = $gdataCal->newTitle($title);
       $when = $gdataCal->newWhen();
       $when->startTime = $eventStart;
       $when->endTime = $eventEnd;
    
       $newEvent->when = array($when);
    
       //And at last, the insert is set to the calendar URL found above
       $createdEvent = $gdataCal->insertEvent($newEvent, $appCalUrl);
      }
      echo "<p>".$result->num_rows." added to your Google calendar.</p>";
    

    私の質問を読んで、それについて考えてくれた人に感謝します。上記のコードを強化する方法を誰かが知っている場合(おそらく2つのループは必要ありませんか?)、フィードバックを受け取りたいと思います。



    1. MySQLデータベース用の高度なOracleJDeveloper機能の使用

    2. STRAIGHT_JOINがこのクエリを大幅に改善するのはなぜですか。また、SELECTキーワードの後に​​記述された場合、それはどういう意味ですか。

    3. SQLServerを使用するためのAzure仮想マシン

    4. SQLで列を一意にする方法は?