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
- Google Cloud projekts ar iespējotu Google Calendar API.
- Pakalpojuma konts šim projektam un tā atslēga JSON formātā.
- Kalendārs, kurā pakalpojuma kontam ir atļauja modificēt notikumus.
Kā izveidot pakalpojuma kontu un iegūt atslēgu
- Dodieties uz Google Cloud Console un izveidojiet jaunu projektu.

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



- Dodieties uz IAM & Admin → Service Accounts, izveidojiet pakalpojuma kontu un piešķiriet tam Owner lomu.



- Atveriet izveidoto pakalpojuma kontu → cilni Keys → Add key → Create new key → atlasiet JSON.



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

- Saglabājiet pakalpojuma konta adresi — lauku
client_emaillejupielā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
- 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.

- Sadaļā Project Constants pievienojiet mainīgo ar nosaukumu
calendar_json_keysun 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 groups → Add people and groups → ievadiet pakalpojuma konta client_email un piešķiriet atļauju Make changes to events.

Bez šīs atļaujas Google atgriež
Not Foundpat 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 calendar → Calendar 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ādiet02.09.2026kāend_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ākumsdd.mm.yyyyformātā; -
end_date— perioda beigasdd.mm.yyyyformā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:
- Pārliecinieties, ka
calendar_idir pareizs. - Pārliecinieties, ka pakalpojuma konta
client_emailir pievienots kalendāra iestatījumos. - 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
Nav piemērota abonementa plāna
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.