Sample code for 30+ languages & platforms
Pascal (Lazarus/Delphi)

Insert a New Google Calendar Event

See more Google Calendar Examples

Demonstrates how to insert a new Google Calendar event.

Chilkat Pascal (Lazarus/Delphi) Downloads

Pascal (Lazarus/Delphi)
program ChilkatDemo;

// Demonstrates using the Chilkat Pascal wrapper via the C bridge DLL.
// Builds as a console application under Lazarus (FPC) or Delphi.

{$IFDEF FPC}
  {$MODE DELPHI}
{$ENDIF}
{$APPTYPE CONSOLE}

uses
  {$IFDEF UNIX}
  cthreads,
  {$ENDIF}
  SysUtils,
  CkDllLoader,
  Chilkat.Http,
  Chilkat.HttpResponse,
  Chilkat.JsonObject;

// ---------------------------------------------------------------------------

procedure RunDemo;
var
  success: Boolean;
  jsonToken: TJsonObject;
  http: THttp;
  json: TJsonObject;
  url: string;
  resp: THttpResponse;
  jsonResp: TJsonObject;

begin
  success := False;

  //  This example requires the Chilkat API to have been previously unlocked.
  //  See Global Unlock Sample for sample code.

  //  This example uses a previously obtained access token having permission for the 
  //  Google Calendar scope.

  //  In this example, Get Google Calendar OAuth2 Access Token, the access
  //  token was saved to a JSON file.  This example fetches the access token from the file..
  jsonToken := TJsonObject.Create;
  success := jsonToken.LoadFile('qa_data/tokens/googleCalendar.json');
  if (jsonToken.HasMember('access_token') = False) then
    begin
      WriteLn('No access token found.');
      Exit;
    end;
  http := THttp.Create;
  http.AuthToken := jsonToken.StringOf('access_token');

  //  Build a Google Calendar event:
  json := TJsonObject.Create;
  json.EmitCompact := False;
  json.UpdateString('kind','calendar#event');
  json.UpdateString('summary','Eat Lou Malnati''s Pizza');
  json.UpdateString('start.dateTime','2021-03-12T12:00:00-05:00');
  json.UpdateString('end.dateTime','2021-03-12T13:00:00-05:00');

  WriteLn(json.Emit());

  //  This is the event JSON we'll be sending the HTTP POST:

  //  {
  //    "kind": "calendar#event",
  //    "summary": "Eat Lou Malnati's Pizza",
  //    "start": {
  //      "dateTime": "2021-03-12T12:00:00-05:00"
  //    },
  //    "end": {
  //      "dateTime": "2021-03-12T13:00:00-05:00"
  //    }
  //  }

  url := 'https://www.googleapis.com/calendar/v3/calendars/{$calendarId}/events';
  http.SetUrlVar('calendarId','primary');
  resp := THttpResponse.Create;
  success := http.HttpJson('POST',url,json,'application/json',resp);
  if (success = False) then
    begin
      WriteLn(http.LastErrorText);
      Exit;
    end;

  jsonResp := TJsonObject.Create;
  jsonResp.EmitCompact := False;
  jsonResp.Load(resp.BodyStr);

  if (resp.StatusCode = 200) then
    begin
      //  Success.
      //  The newly created event resource JSON is returned.
      WriteLn(jsonResp.Emit());
    end
  else
    begin
      if (resp.StatusCode = 401) then
        begin
          WriteLn('Try refreshing the access token and then retry...');
        end;

      //  Failed. 
      //  Show the JSON error response.
      WriteLn(jsonResp.Emit());
    end;

  //  A successful response body:

  //  {
  //    "kind": "calendar#event",
  //    "etag": "\"3004969011208000\"",
  //    "id": "v7kvmsvsoms3hjl5uq423jqhb0",
  //    "status": "confirmed",
  //    "htmlLink": "https://www.google.com/calendar/event?eid=djdrdm1zdnNvbXMzaGpsNXVxNDIzanFoYjAgc3VwcG9ydEBjaGlsa2F0Y2xvdWQuY29t",
  //    "created": "2017-08-11T20:48:25.000Z",
  //    "updated": "2017-08-11T20:48:25.604Z",
  //    "summary": "Eat Lou Malnati's Pizza",
  //    "creator": {
  //      "email": "support@chilkatcloud.com",
  //      "self": true
  //    },
  //    "organizer": {
  //      "email": "support@chilkatcloud.com",
  //      "self": true
  //    },
  //    "start": {
  //      "dateTime": "2017-08-12T12:00:00-05:00"
  //    },
  //    "end": {
  //      "dateTime": "2017-08-12T13:00:00-05:00"
  //    },
  //    "iCalUID": "v7kvmsvsoms3hjl5uq423jqhb0@google.com",
  //    "sequence": 0,
  //    "hangoutLink": "https://plus.google.com/hangouts/_/chilkatcloud.com/support?hceid=c3VwcG9ydEBjaGlsa2F0Y2xvdWQuY29t.v7kvmsvsoms3hjl5uq423jqhb0",
  //    "reminders": {
  //      "useDefault": true
  //    }
  //  }


  jsonToken.Free;
  http.Free;
  json.Free;
  resp.Free;
  jsonResp.Free;

end;

// ---------------------------------------------------------------------------

begin

  try
    RunDemo;
  except
    on E: Exception do
      WriteLn('Unhandled exception: ', E.ClassName, ': ', E.Message);
  end;

  WriteLn;
  {$IFDEF MSWINDOWS}
  WriteLn('Press Enter to exit...');
  ReadLn;
  {$ENDIF}
end.