דמיינו אפליקציה שעוזרת למשתמשים למצוא את מסלולי ההליכה הטובים ביותר. על ידי הוספת תוכנית של טיול רגלי כאירוע ביומן, המשתמשים מקבלים עזרה רבה כדי להישאר מאורגנות באופן אוטומטי. יומן Google עוזר להם לשתף את התוכנית מזכיר להם את זה כדי שהם יוכלו להתכונן בלי לחץ. כמו כן, בזכות שילוב חלק של מוצרי Google, 'Google עכשיו' מצלצל אליהם לגבי הזמן לעזוב אותו ומפות Google להפנות אותו למקום הפגישה בזמן.
במאמר הזה מוסבר איך ליצור אירועים ביומן ולהוסיף אותם לרשימת האירועים של המשתמשים. יומנים.
הוספת אירוע
כדי ליצור אירוע, קוראים לפונקציה
השיטה events.insert()
מספקת
לפחות את הפרמטרים הבאים:
calendarId
הוא מזהה היומן, והוא יכול להיות כתובת האימייל שלו של היומן שבו יש ליצור את האירוע או מילת מפתח מיוחדת'primary'
שישתמש ביומן הראשי של המשתמש המחובר. אם המיקום אתם לא יודעים מהי כתובת האימייל של היומן שבו תרצו להשתמש, את יכולה לבדוק בהגדרות של היומן באתר של יומן Google ממשק משתמש (בקטע 'כתובת היומן') או שאפשר לחפש אותו. כתוצאה מכךcalendarList.list()
.event
הוא האירוע שיש ליצור עם כל הפרטים הנדרשים, כמו התחלה ובסופו. שני שדות החובה היחידים הם פעמיםstart
ו-end
. לצפייה קובץ עזר שלevent
לקבוצה המלאה של אירועים .
כדי ליצור את האירועים בהצלחה, צריך:
- צריך להגדיר את היקף הרשאות ה-OAuth ל-
https://www.googleapis.com/auth/calendar
כדי יש לכם גישת עריכה ליומן של המשתמש. - מוודאים שלמשתמש המאומת יש גישת כתיבה ליומן באמצעות
calendarId
שסיפקת (לדוגמה, על ידי התקשרות)calendarList.get()
עבורcalendarId
ומתבצעת בדיקה שלaccessRole
).
הוספת מטא-נתונים של אירוע
אפשר להוסיף מטא-נתונים של אירועים כשיוצרים אירוע ביומן. אם
לבחור שלא להוסיף מטא-נתונים במהלך היצירה, אפשר לעדכן שדות רבים באמצעות
events.update()
עם זאת, חלק מהשדות
כמו מזהה האירוע, רק במהלך
פעולה events.insert()
.
- מיקום
הוספת כתובת לשדה המיקום מפעילה תכונות כמו
"הגיע הזמן לצאת" או הצגת מפה עם מסלול הגעה.
- מזהה אירוע
כשיוצרים אירוע, אפשר ליצור מזהה אירוע משלכם
שתואם לדרישות הפורמט שלנו. כך תוכלו לשמור ישויות במסד הנתונים המקומי בסנכרון עם האירועים ביומן Google. כמו כן מונעת יצירת אירוע כפול אם הפעולה נכשלת בשלב כלשהו לאחר הוא מופעל בהצלחה בקצה העורפי של יומן Google. אם לא מזהה האירוע סופק, השרת יוצר אותו בשבילכם. כאן מופיע מזהה האירוע למידע נוסף.
- משתתפים
האירוע שתיצרו יופיע בכל יומני Google הראשיים של
המשתתפים שכללתם עם אותו מזהה אירוע. אם מגדירים
sendNotifications
עדtrue
בבקשת ההוספה, המשתתפים יקבלו גם התראה באימייל על האירוע. הצג את האירועים עם מדריך למשתתפים מרובים מידע נוסף.
בדוגמאות הבאות מוסבר איך ליצור אירוע ולהגדיר את המטא-נתונים שלו:
Go
// Refer to the Go quickstart on how to setup the environment:
// https://developers.google.com/calendar/quickstart/go
// Change the scope to calendar.CalendarScope and delete any stored credentials.
event := &calendar.Event{
Summary: "Google I/O 2015",
Location: "800 Howard St., San Francisco, CA 94103",
Description: "A chance to hear more about Google's developer products.",
Start: &calendar.EventDateTime{
DateTime: "2015-05-28T09:00:00-07:00",
TimeZone: "America/Los_Angeles",
},
End: &calendar.EventDateTime{
DateTime: "2015-05-28T17:00:00-07:00",
TimeZone: "America/Los_Angeles",
},
Recurrence: []string{"RRULE:FREQ=DAILY;COUNT=2"},
Attendees: []*calendar.EventAttendee{
&calendar.EventAttendee{Email:"lpage@example.com"},
&calendar.EventAttendee{Email:"sbrin@example.com"},
},
}
calendarId := "primary"
event, err = srv.Events.Insert(calendarId, event).Do()
if err != nil {
log.Fatalf("Unable to create event. %v\n", err)
}
fmt.Printf("Event created: %s\n", event.HtmlLink)
Java
// Refer to the Java quickstart on how to setup the environment:
// https://developers.google.com/calendar/quickstart/java
// Change the scope to CalendarScopes.CALENDAR and delete any stored
// credentials.
Event event = new Event()
.setSummary("Google I/O 2015")
.setLocation("800 Howard St., San Francisco, CA 94103")
.setDescription("A chance to hear more about Google's developer products.");
DateTime startDateTime = new DateTime("2015-05-28T09:00:00-07:00");
EventDateTime start = new EventDateTime()
.setDateTime(startDateTime)
.setTimeZone("America/Los_Angeles");
event.setStart(start);
DateTime endDateTime = new DateTime("2015-05-28T17:00:00-07:00");
EventDateTime end = new EventDateTime()
.setDateTime(endDateTime)
.setTimeZone("America/Los_Angeles");
event.setEnd(end);
String[] recurrence = new String[] {"RRULE:FREQ=DAILY;COUNT=2"};
event.setRecurrence(Arrays.asList(recurrence));
EventAttendee[] attendees = new EventAttendee[] {
new EventAttendee().setEmail("lpage@example.com"),
new EventAttendee().setEmail("sbrin@example.com"),
};
event.setAttendees(Arrays.asList(attendees));
EventReminder[] reminderOverrides = new EventReminder[] {
new EventReminder().setMethod("email").setMinutes(24 * 60),
new EventReminder().setMethod("popup").setMinutes(10),
};
Event.Reminders reminders = new Event.Reminders()
.setUseDefault(false)
.setOverrides(Arrays.asList(reminderOverrides));
event.setReminders(reminders);
String calendarId = "primary";
event = service.events().insert(calendarId, event).execute();
System.out.printf("Event created: %s\n", event.getHtmlLink());
JavaScript
// Refer to the JavaScript quickstart on how to setup the environment:
// https://developers.google.com/calendar/quickstart/js
// Change the scope to 'https://www.googleapis.com/auth/calendar' and delete any
// stored credentials.
const event = {
'summary': 'Google I/O 2015',
'location': '800 Howard St., San Francisco, CA 94103',
'description': 'A chance to hear more about Google\'s developer products.',
'start': {
'dateTime': '2015-05-28T09:00:00-07:00',
'timeZone': 'America/Los_Angeles'
},
'end': {
'dateTime': '2015-05-28T17:00:00-07:00',
'timeZone': 'America/Los_Angeles'
},
'recurrence': [
'RRULE:FREQ=DAILY;COUNT=2'
],
'attendees': [
{'email': 'lpage@example.com'},
{'email': 'sbrin@example.com'}
],
'reminders': {
'useDefault': false,
'overrides': [
{'method': 'email', 'minutes': 24 * 60},
{'method': 'popup', 'minutes': 10}
]
}
};
const request = gapi.client.calendar.events.insert({
'calendarId': 'primary',
'resource': event
});
request.execute(function(event) {
appendPre('Event created: ' + event.htmlLink);
});
Node.js
// Refer to the Node.js quickstart on how to setup the environment:
// https://developers.google.com/calendar/quickstart/node
// Change the scope to 'https://www.googleapis.com/auth/calendar' and delete any
// stored credentials.
const event = {
'summary': 'Google I/O 2015',
'location': '800 Howard St., San Francisco, CA 94103',
'description': 'A chance to hear more about Google\'s developer products.',
'start': {
'dateTime': '2015-05-28T09:00:00-07:00',
'timeZone': 'America/Los_Angeles',
},
'end': {
'dateTime': '2015-05-28T17:00:00-07:00',
'timeZone': 'America/Los_Angeles',
},
'recurrence': [
'RRULE:FREQ=DAILY;COUNT=2'
],
'attendees': [
{'email': 'lpage@example.com'},
{'email': 'sbrin@example.com'},
],
'reminders': {
'useDefault': false,
'overrides': [
{'method': 'email', 'minutes': 24 * 60},
{'method': 'popup', 'minutes': 10},
],
},
};
calendar.events.insert({
auth: auth,
calendarId: 'primary',
resource: event,
}, function(err, event) {
if (err) {
console.log('There was an error contacting the Calendar service: ' + err);
return;
}
console.log('Event created: %s', event.htmlLink);
});
PHP
$event = new Google_Service_Calendar_Event(array(
'summary' => 'Google I/O 2015',
'location' => '800 Howard St., San Francisco, CA 94103',
'description' => 'A chance to hear more about Google\'s developer products.',
'start' => array(
'dateTime' => '2015-05-28T09:00:00-07:00',
'timeZone' => 'America/Los_Angeles',
),
'end' => array(
'dateTime' => '2015-05-28T17:00:00-07:00',
'timeZone' => 'America/Los_Angeles',
),
'recurrence' => array(
'RRULE:FREQ=DAILY;COUNT=2'
),
'attendees' => array(
array('email' => 'lpage@example.com'),
array('email' => 'sbrin@example.com'),
),
'reminders' => array(
'useDefault' => FALSE,
'overrides' => array(
array('method' => 'email', 'minutes' => 24 * 60),
array('method' => 'popup', 'minutes' => 10),
),
),
));
$calendarId = 'primary';
$event = $service->events->insert($calendarId, $event);
printf('Event created: %s\n', $event->htmlLink);
Python
# Refer to the Python quickstart on how to setup the environment:
# https://developers.google.com/calendar/quickstart/python
# Change the scope to 'https://www.googleapis.com/auth/calendar' and delete any
# stored credentials.
event = {
'summary': 'Google I/O 2015',
'location': '800 Howard St., San Francisco, CA 94103',
'description': 'A chance to hear more about Google\'s developer products.',
'start': {
'dateTime': '2015-05-28T09:00:00-07:00',
'timeZone': 'America/Los_Angeles',
},
'end': {
'dateTime': '2015-05-28T17:00:00-07:00',
'timeZone': 'America/Los_Angeles',
},
'recurrence': [
'RRULE:FREQ=DAILY;COUNT=2'
],
'attendees': [
{'email': 'lpage@example.com'},
{'email': 'sbrin@example.com'},
],
'reminders': {
'useDefault': False,
'overrides': [
{'method': 'email', 'minutes': 24 * 60},
{'method': 'popup', 'minutes': 10},
],
},
}
event = service.events().insert(calendarId='primary', body=event).execute()
print 'Event created: %s' % (event.get('htmlLink'))
Ruby
event = Google::Apis::CalendarV3::Event.new(
summary: 'Google I/O 2015',
location: '800 Howard St., San Francisco, CA 94103',
description: 'A chance to hear more about Google\'s developer products.',
start: Google::Apis::CalendarV3::EventDateTime.new(
date_time: '2015-05-28T09:00:00-07:00',
time_zone: 'America/Los_Angeles'
),
end: Google::Apis::CalendarV3::EventDateTime.new(
date_time: '2015-05-28T17:00:00-07:00',
time_zone: 'America/Los_Angeles'
),
recurrence: [
'RRULE:FREQ=DAILY;COUNT=2'
],
attendees: [
Google::Apis::CalendarV3::EventAttendee.new(
email: 'lpage@example.com'
),
Google::Apis::CalendarV3::EventAttendee.new(
email: 'sbrin@example.com'
)
],
reminders: Google::Apis::CalendarV3::Event::Reminders.new(
use_default: false,
overrides: [
Google::Apis::CalendarV3::EventReminder.new(
reminder_method: 'email',
minutes: 24 * 60
),
Google::Apis::CalendarV3::EventReminder.new(
reminder_method: 'popup',
minutes: 10
)
]
)
)
result = client.insert_event('primary', event)
puts "Event created: #{result.html_link}"
הוספת קבצים מצורפים מ-Drive לאירועים
אפשר לצרף את Google Drive
כמו סיכומי פגישות ב-Docs, תקציבים
Sheets, מצגות ב-Slides או כל סוג אחר
קבצים רלוונטיים ב-Google Drive לאירועים ביומן. אפשר להוסיף את
כשתיצרו אירוע עם
events.insert()
ואילך כחלק
עדכון, למשל באמצעות events.patch()
שני החלקים בצירוף קובץ מ-Google Drive לאירוע:
- מוצאים את הקובץ
alternateLink
,title
ו-mimeType
מ- משאב Files של Drive API, בדרך כלל באמצעות השיטהfiles.get()
. - יצירה או עדכון של אירוע עם השדות
attachments
שמוגדרים בבקשה body והפרמטרsupportsAttachments
מוגדרים ל-true
.
הקוד לדוגמה הבא ממחיש איך לעדכן אירוע קיים כדי להוסיף אירוע קובץ מצורף:
Java
public static void addAttachment(Calendar calendarService, Drive driveService, String calendarId,
String eventId, String fileId) throws IOException {
File file = driveService.files().get(fileId).execute();
Event event = calendarService.events().get(calendarId, eventId).execute();
List<EventAttachment> attachments = event.getAttachments();
if (attachments == null) {
attachments = new ArrayList<EventAttachment>();
}
attachments.add(new EventAttachment()
.setFileUrl(file.getAlternateLink())
.setMimeType(file.getMimeType())
.setTitle(file.getTitle()));
Event changes = new Event()
.setAttachments(attachments);
calendarService.events().patch(calendarId, eventId, changes)
.setSupportsAttachments(true)
.execute();
}
PHP
function addAttachment($calendarService, $driveService, $calendarId, $eventId, $fileId) {
$file = $driveService->files->get($fileId);
$event = $calendarService->events->get($calendarId, $eventId);
$attachments = $event->attachments;
$attachments[] = array(
'fileUrl' => $file->alternateLink,
'mimeType' => $file->mimeType,
'title' => $file->title
);
$changes = new Google_Service_Calendar_Event(array(
'attachments' => $attachments
));
$calendarService->events->patch($calendarId, $eventId, $changes, array(
'supportsAttachments' => TRUE
));
}
Python
def add_attachment(calendarService, driveService, calendarId, eventId, fileId):
file = driveService.files().get(fileId=fileId).execute()
event = calendarService.events().get(calendarId=calendarId,
eventId=eventId).execute()
attachments = event.get('attachments', [])
attachments.append({
'fileUrl': file['alternateLink'],
'mimeType': file['mimeType'],
'title': file['title']
})
changes = {
'attachments': attachments
}
calendarService.events().patch(calendarId=calendarId, eventId=eventId,
body=changes,
supportsAttachments=True).execute()
איך מוסיפים לאירועים שיחות ועידה בטלפון או בווידאו
אפשר לשייך אירועים עם Hangouts ו- שיחות ועידה ב-Google Meet לאפשר למשתמשים להיפגש מרחוק באמצעות שיחת טלפון או שיחת וידאו.
השדה conferenceData
יכול
לשמש לקריאה, להעתקה ולמחיקה של הפרטים הקיימים של שיחת הוועידה. אפשר גם להיות
ששימשו כדי לבקש יצירה של שיחות ועידה חדשות. כדי לאפשר יצירה
שינוי של פרטי שיחת הוועידה, הגדרת הבקשה של conferenceDataVersion
ל-1
.
כרגע יש שלושה סוגים של conferenceData
שנתמכים, כפי שמצוין ב-
conferenceData.conferenceSolution.key.type
:
- Hangouts לצרכנים (
eventHangout
) - הגרסה הקלאסית של Hangouts Google Workspace למשתמשים
(הוצא משימוש;
eventNamedHangout
) - Google Meet (
hangoutsMeet
)
תוכלו לראות איזה סוג של שיחת ועידה נתמך בכל יומן נתון של
משתמש על ידי עיון בconferenceProperties.allowedConferenceSolutionTypes
ב
calendars
אוספים calendarList
. אפשר גם
לקבל מידע אם המשתמש מעדיף ליצור Hangouts לכל השיחות החדשות
שנוצרו על ידי סימון ההגדרה autoAddHangouts
האוסף settings
.
מלבד type
, conferenceSolution
מספק גם את name
ואת
iconUri
שדות שבהם אפשר להשתמש כדי לייצג את פתרון שיחת הוועידה כפי שמוצג
למטה:
JavaScript
const solution = event.conferenceData.conferenceSolution;
const content = document.getElementById("content");
const text = document.createTextNode("Join " + solution.name);
const icon = document.createElement("img");
icon.src = solution.iconUri;
content.appendChild(icon);
content.appendChild(text);
כדי ליצור שיחת ועידה חדשה לאירוע צריך לספק ל-createRequest
requestId
חדש שנוצר שיכול להיות string
אקראי. שיחות ועידה הן
נוצרה באופן אסינכרוני, אבל תמיד אפשר לבדוק את סטטוס הבקשה כדי
כדי שהמשתמשים יוכלו לדעת מה קורה,
לדוגמה, כדי לבקש יצירת שיחת ועידה של אירוע קיים:
JavaScript
const eventPatch = {
conferenceData: {
createRequest: {requestId: "7qxalsvy0e"}
}
};
gapi.client.calendar.events.patch({
calendarId: "primary",
eventId: "7cbh8rpc10lrc0ckih9tafss99",
resource: eventPatch,
sendNotifications: true,
conferenceDataVersion: 1
}).execute(function(event) {
console.log("Conference created for event: %s", event.htmlLink);
});
יכול להיות שהתשובה המיידית לשיחה הזו עוד לא מכילה את כל הפרטים
conferenceData
; מצוין באמצעות קוד הסטטוס pending
בשדה
סטטוס
השדה הזה. קוד הסטטוס ישתנה ל-success
אחרי שהפרטים של שיחת הוועידה
מאוכלס. השדה entryPoints
מכיל מידע על סוג הסרטון
מזהי URI של טלפון שזמינים למשתמשים באמצעות הטלפון.
אם אתם רוצים לקבוע כמה אירועים ביומן Google
פרטי שיחת הוועידה, אפשר להעתיק את כל conferenceData
מאירוע אחד אל
אחר.
ההעתקה שימושית במצבים מסוימים. לדוגמה, נניח שאתם מפתחים אפליקציית גיוס שמגדירה אירועים נפרדים למועמד מראיין – צריך להגן על הזהות של המראיין, אבל אם אתם רוצים לוודא שכל המשתתפים יצטרפו לאותה שיחת ועידה.