Google kalendārs tiek pārvaldīts, izmantojot kalkulatora funkcijas: tērzēšanas robots sazinās ar Google API, izmantojot jūsu pakalpojuma kontu. Nav nepieciešams konfigurēt atsevišķus HTTP pieprasījumus.

Prasības

  1. Google Cloud projekts ar iespējotu Google Calendar API.
  2. Pakalpojuma konts šim projektam un tā atslēga JSON formātā.
  3. Kalendārs, kurā pakalpojuma kontam ir atļauja modificēt notikumus.

Kā izveidot pakalpojuma kontu un iegūt atslēgu

  1. Dodieties uz Google Cloud Console un izveidojiet jaunu projektu.

  1. Dodieties uz APIs & ServicesLibrary, atrodiet Google Calendar API un noklikšķiniet Enable. Bez šī soļa visi pieprasījumi atgriezīs kļūdu.

  1. Dodieties uz IAM & AdminService Accounts, izveidojiet pakalpojuma kontu un piešķiriet tam Owner lomu.

  1. Atveriet izveidoto pakalpojuma kontu → cilni KeysAdd keyCreate new key → atlasiet JSON.

Atslēgas fails tiks lejupielādēts jūsu datorā.

  1. Saglabājiet pakalpojuma konta adresi — lauku client_email lejupielādētajā failā, piemēram, [email protected]. Jums tā būs nepieciešama, lai piešķirtu pakalpojuma kontam piekļuvi kalendāram.

Kur glabāt atslēgu: mainīgais calendar_json_keys

  1. Augšupielādējiet lejupielādēto JSON failu projekta failu krātuvē, kurā strādājat ar Google kalendāru, pēc tam ar peles labo pogu noklikšķiniet uz faila un kopējiet tā saiti.

  1. Sadaļā Project Constants pievienojiet mainīgo ar nosaukumu calendar_json_keys un iestatiet tā vērtību kā atslēgu masīvu:

Citiem vārdiem, ielīmējiet kopēto saiti uz atslēgas failu, kas augšupielādēts jūsu projektā.

["https://files.mavibot.ai/uploads/file_item/file/your_project_id/your_file_name.json"]

Varat norādīt vairākas atslēgas, piemēram, ja izmantojat dažādus projektus. Katram pieprasījumam veidotājs izmantos vienu no tām:

[
  "https://files.mavibot.ai/uploads/file_item/file/your_project_id/your_file_name.json",
  "https://files.mavibot.ai/uploads/file_item/file/your_project_id/your_file_name.json"
]

Saites vietā varat norādīt visu atslēgu tieši no augšupielādētā faila:

[
  {
    "type": "service_account",
    "project_id": "my-project",
    "private_key": "-----BEGIN PRIVATE KEY-----...",
    "client_email": "[email protected]",
    "..."
  }
]

Kā piešķirt pakalpojuma kontam piekļuvi kalendāram

Atveriet vajadzīgā kalendāra iestatījumus → Share with people or groupsAdd people and groups → ievadiet pakalpojuma konta client_email un piešķiriet atļauju Make changes to events.

Bez šīs atļaujas Google atgriež Not Found pat tad, ja kalendārs pastāv.

Kalendārs, kas izveidots, izmantojot gcal_create_calendar, nekavējoties ir pieejams pakalpojuma kontam, tāpēc tas nav atsevišķi jākoplieto.

Kā atrast kalendāra ID

Atveriet kalendāra iestatījumus → Integrate calendarCalendar ID.

ID izskatās aptuveni šādi:

[email protected]

Varat arī iegūt visu pieejamo kalendāru ID, izmantojot:

gcal_calendars_list()

Kā izsaukt funkcijas, datumu formāti un laika joslas

Funkcijas, tostarp visas tālāk uzskaitītās, tiek ievadītas kalkulatorā tērzēšanas robota veidotājā.

Rezultātu ir ērti saglabāt tieši mainīgajā:

event = gcal_add_event("[email protected]", "Consultation", "20.08.2026 14:00", "20.08.2026 15:00")

Katra funkcija atgriež Google API atbildi JSON formātā. Ja rodas kļūda, atbilde izskatās šādi:

{"status": false, "err": "error description"}

Konkrētu lauku no atbildes var iegūt, izmantojot funkciju get.

Piemēram:

get(event, 'id')

Vērtību formāti

Vērtība Formāts Piemērs
Datums un laiks dd.mm.yyyy HH:MM 20.08.2026 14:00
Datums (visas dienas notikums) dd.mm.yyyy 20.08.2026
Laika josla IANA identifikators Europe/Moscow, Europe/Istanbul

Ja laika josla nav norādīta, tiek izmantota projekta iestatījumos konfigurētā laika josla.


Kalendāri

Kā izveidot kalendāru

Izmantojiet šādu funkciju:

gcal_create_calendar(name, description=null, time_zone=null, location=null, owner_email=null)

Parametri:

  • name — kalendāra nosaukums;
  • description — kalendāra apraksts;
  • time_zone — laika josla;
  • location — atrašanās vieta;
  • owner_email — Google konta e-pasta adrese, kas saņems īpašnieka atļaujas. Pakalpojuma kontam saglabāsies piekļuve kalendāram.

Piemērs:

calendar = gcal_create_calendar("Consultation Bookings", "Bot calendar", "Europe/Moscow", "", "[email protected]")

Funkcija atgriež izveidotā kalendāra datus:

{
  "kind": "calendar#calendar",
  "id": "[email protected]",
  "summary": "Consultation Bookings",
  "timeZone": "Europe/Moscow"
}

Saglabājiet ID no lauka id projekta mainīgajā — tas ir nepieciešams visām pārējām funkcijām.

Kā iegūt kalendāra informāciju

gcal_get_calendar(calendar_id)

Funkcija atgriež kalendāra nosaukumu, aprakstu, laika joslu un adresi.

Kā iegūt pakalpojuma konta kalendāru sarakstu

gcal_calendars_list()

Funkcija atgriež visus pakalpojuma kontam pieejamos kalendārus kopā ar to ID.

Kā dzēst kalendāru

gcal_remove_calendar(calendar_id)

Ja kalendārs ir veiksmīgi dzēsts, funkcija atgriež:

{"status": true}

Notikumi

Kā ātri pievienot notikumu

Izmantojiet šādu funkciju:

gcal_quick_add_event(calendar_id, event_name)

Google automātiski parsēs datumu un laiku no teksta.

Piemērs:

event = gcal_quick_add_event("[email protected]", "Meeting with John tomorrow at 15:00")

Kā pievienot notikumu

Izmantojiet šādu funkciju:

gcal_add_event(calendar_id, event_name, start_datetime=null, end_datetime=null, event_description=null, location=null, time_zone=null, extra_params=null)

Parametri:

  • calendar_id — kalendāra ID;
  • event_name — notikuma nosaukums;
  • start_datetime — notikuma sākuma datums un laiks;
  • end_datetime — notikuma beigu datums un laiks;
  • event_description — notikuma apraksts;
  • location — notikuma atrašanās vieta;
  • time_zone — laika josla;
  • extra_params — papildu notikuma parametri JSON formātā.

Piemērs:

event = gcal_add_event("[email protected]", "Consultation #{name}", "20.08.2026 14:00", "20.08.2026 15:00", "Client phone: #{phone}", "Zoom", "Europe/Moscow", '{"popup_minutes": 30, "email_minutes": 60}')

Papildu parametri extra_params

extra_params ir JSON objekts, kas satur neobligātus parametrus:

Parametrs Apraksts
email_minutes Nosūta e-pasta atgādinājumu norādītās minūtes pirms notikuma
popup_minutes Rāda uznirstošo atgādinājumu norādītās minūtes pirms notikuma
start_date Sākuma datums visas dienas notikumam
end_date Beigu datums visas dienas notikumam
transparency opaque — laiks ir atzīmēts kā aizņemts; transparent — laiks paliek pieejams
recurrence_days Nedēļas dienas atkārtošanās gadījumā: MO, TU, WE, TH, FR, SA, SU, atdalītas ar komatiem
recurrence_until Datums, līdz kuram notikums atkārtojas, piemēram, 20261231T000000Z
recurrence_count Atkārtojumu skaits beigu datuma vietā

Noklusējuma vērtība ir:

transparency = opaque

Tas nozīmē, ka notikuma laiks tiek uzskatīts par aizņemtu.

Lai notikuma laiks paliktu pieejams:

{"transparency": "transparent"}

Visas dienas notikums

Visas dienas notikumam nododiet start_date un end_date caur extra_params, nevis start_datetime un end_datetime.

Piemērs visas dienas notikumam, kas atkārtojas pirmdienās un trešdienās 10 reizes:

event = gcal_add_event("[email protected]", "Webinar", null, null, "Weekly webinar", "", null, '{"start_date": "01.09.2026", "end_date": "02.09.2026", "recurrence_days": "MO,WE", "recurrence_count": 10}')

Visas dienas notikumiem Google uzskata beigu datumu par izslēdzošu. Lai izveidotu notikumu, kas aizņem tikai 01.09.2026, norādiet 02.09.2026end_date.

Atbilde, veidojot notikumu

Funkcija atgriež izveidoto notikumu:

{
  "kind": "calendar#event",
  "id": "7b1k2m3n4o5p",
  "status": "confirmed",
  "htmlLink": "https://www.google.com/calendar/event?eid=..."
}

Saglabājiet notikuma id klienta mainīgajā.

Piemēram:

event_id = get(event, 'id')

ID būs nepieciešams vēlāk, lai atjauninātu, pārvietotu vai dzēstu notikumu.


Kā atjaunināt notikumu

Izmantojiet šādu funkciju:

gcal_update_event(calendar_id, event_id, event_name=null, start_datetime=null, end_datetime=null, event_description=null, location=null, time_zone=null, extra_params=null)

Nododiet tikai tos laukus, kurus vēlaties mainīt. Visi pārējie lauki paliks nemainīti.

Piemēram, lai pārceltu esošu notikumu uz 21.08.2026 no 16:00 līdz 17:00:

event = gcal_update_event("[email protected]", "#{event_id}", null, "21.08.2026 16:00", "21.08.2026 17:00")

extra_params struktūra ir tāda pati kā gcal_add_event.

Atgādinājumi tiek atjaunināti pēc veida.

Piemēram, ja nododat tikai:

{"popup_minutes": 30}

uznirstošais atgādinājums tiks aizstāts, bet esošais e-pasta atgādinājums paliks nemainīgs.


Kā iegūt notikumu sarakstu

Izmantojiet šādu funkciju:

gcal_get_event_list(calendar_id, start_date=null, end_date=null)

Parametri:

  • calendar_id — kalendāra ID;
  • start_date — perioda sākums dd.mm.yyyy formātā;
  • end_date — perioda beigas dd.mm.yyyy formātā.

Piemērs:

events = gcal_get_event_list("[email protected]", "20.08.2026", "27.08.2026")

Ja datumi nav norādīti, funkcija atgriež notikumus pašreizējai dienai:

events = gcal_get_event_list("[email protected]")

Notikumi tiek atgriezti sakārtoti pēc sākuma laika.

Atkārtoti notikumi tiek atgriezti kā atsevišķi ieraksti.


Kā iegūt notikuma informāciju

Izmantojiet šādu funkciju:

gcal_get_event(calendar_id, event_id)

Funkcija atgriež visus notikuma datus, tostarp:

  • nosaukumu;
  • aprakstu;
  • datumu un laiku;
  • atrašanās vietu;
  • dalībniekus;
  • atgādinājumus;
  • citus notikuma parametrus.

Piemērs:

event = gcal_get_event("[email protected]", "#{event_id}")

Kā pārvietot notikumu uz citu kalendāru

Izmantojiet šādu funkciju:

gcal_move_event(calendar_id, event_id, destination_calendar_id)

kur:

  • calendar_id — pašreizējā kalendāra ID;
  • event_id — notikuma ID;
  • destination_calendar_id — kalendāra ID, uz kuru notikums jāpārvieto.

Piemērs:

event = gcal_move_event("[email protected]", "#{event_id}", "[email protected]")

Kā dzēst notikumu

Izmantojiet šādu funkciju:

gcal_remove_event(calendar_id, event_id)

Piemērs:

result = gcal_remove_event("[email protected]", "#{event_id}")

Ja notikums tiek veiksmīgi dzēsts, funkcija atgriež:

{"status": true}

Notikuma dalībnieki

Kā pievienot dalībnieku

Izmantojiet šādu funkciju:

gcal_add_client(calendar_id, event_id, client_email, name=null, comment=null)

Parametri:

  • calendar_id — kalendāra ID;
  • event_id — notikuma ID;
  • client_email — dalībnieka e-pasta adrese;
  • name — vārds, kas tiks parādīts kalendārā;
  • comment — komentārs dalībniekam.

Piemērs:

event = gcal_add_client("[email protected]", "#{event_id}", "#{email}", "#{name}", "Booked through the bot")

Ja šis dalībnieks jau ir pievienots notikumam, funkcija atgriež kļūdu:

{"status": false, "err": "attendee already exists"}

Kā noņemt dalībnieku

Izmantojiet šādu funkciju:

gcal_remove_client(calendar_id, event_id, client_email)

Parametri:

  • calendar_id — kalendāra ID;
  • event_id — notikuma ID;
  • client_email — noņemamā dalībnieka e-pasta adrese.

Piemērs:

event = gcal_remove_client("[email protected]", "#{event_id}", "#{email}")

Ja norādītais dalībnieks nav notikumā, funkcija atgriež:

{"status": false, "err": "attendee not found"}

Iespējamās kļūdas

Ja rodas kļūda, funkcijas atgriež objektu šādā formātā:

{
  "status": false,
  "err": "error description"
}

Biežākās kļūdas:

Atbilde Iemesls
Not Found Kalendārs nav koplietots ar pakalpojuma kontu, vai norādīts nepareizs calendar_id
Google Calendar API has not been used in project ... or it is disabled Google Calendar API nav iespējots Google Cloud projektā
The key to access the calendar was not found in the passed link Saite calendar_json_keys neatgriež atslēgas failu
wrong datetime "...", expected format is dd.mm.yyyy HH:MM Datums un laiks norādīti nepareizā formātā
wrong date "...", expected format is dd.mm.yyyy Datums norādīts nepareizā formātā
Работает только на тарифах Бизнес и Инфобиз Projektam nav aktīva abonementa, kas ietver piekļuvi šai funkcijai

Not Found kļūda

Ja Google atgriež:

Not Found

pārbaudiet sekojošo:

  1. Pārliecinieties, ka calendar_id ir pareizs.
  2. Pārliecinieties, ka pakalpojuma konta client_email ir pievienots kalendāra iestatījumos.
  3. Pārliecinieties, ka pakalpojuma kontam ir atļauja Make changes to events.

Pat ja kalendārs pastāv, Google var atgriezt Not Found, ja pakalpojuma kontam nav piekļuves.

Google Calendar API nav iespējots

Kļūda izskatās aptuveni šādi:

Google Calendar API has not been used in project ... or it is disabled

Atveriet savu projektu Google Cloud un iespējojiet:

APIs & Services → Library → Google Calendar API → Enable

Pēc API iespējošanas atkārtojiet pieprasījumu.

Pakalpojuma konta atslēga nav atrasta

Kļūda:

The key to access the calendar was not found in the passed link

Pārbaudiet vērtību:

calendar_json_keys

Ja izmantojat faila saiti, tai tieši jāatgriež JSON fails, kas satur pakalpojuma konta atslēgu.

Piemērs:

["https://files.salebot.pro/xxxxxxxx/key.json"]

Varat arī norādīt atslēgu tieši calendar_json_keys kā JSON objektu.

Nepareizs datuma un laika formāts

Kļūda:

wrong datetime "...", expected format is dd.mm.yyyy HH:MM

Pareizais formāts:

dd.mm.yyyy HH:MM

Piemērs:

20.08.2026 14:00

Nepareizi piemēri:

2026-08-20 14:00
20/08/2026 14:00
20.08.2026

Ja funkcija sagaida gan datumu, gan laiku, jānorāda datums kopā ar stundām un minūtēm.

Nepareizs datuma formāts

Kļūda:

wrong date "...", expected format is dd.mm.yyyy

Pareizais formāts:

dd.mm.yyyy

Piemērs:

20.08.2026

Kļūda:

Работает только на тарифах Бизнес и Инфобиз

Tas nozīmē, ka projektam nav aktīva abonementa, kas ļauj izmantot Google Calendar funkcijas.


Ātrs piemērs

Izveidojiet notikumu un saglabājiet tā ID:

event = gcal_add_event("[email protected]", "Consultation #{name}", "20.08.2026 14:00", "20.08.2026 15:00", "Client phone: #{phone}", "Zoom", "Europe/Moscow")

event_id = get(event, 'id')

Pievienojiet klientu izveidotajam notikumam:

event = gcal_add_client("[email protected]", "#{event_id}", "#{email}", "#{name}", "Booked through the bot")

Ja klients nolemj pārplānot:

event = gcal_update_event("[email protected]", "#{event_id}", null, "21.08.2026 16:00", "21.08.2026 17:00")

Ja klients atceļ rezervāciju:

result = gcal_remove_event("[email protected]", "#{event_id}")

Google API kļūdas tiek atgrieztas nemainītas err laukā. Kļūdas ziņojums palīdz noteikt, kas trūkst: piekļuve kalendāram, iespējots API, derīga atslēga, pareizs datuma formāts vai esošs notikums.