How to switch between different calendars? - events

I have a bunch of calendars in my google calendar account. I figured out how to add an event under one of the calendars, but is there a way to switch to a different calendar through update() when you already have the events created?
Thanks

Try using:
Events: move
Moves an event to another calendar, i.e. changes an event's organizer.
Here is a sample code for move():
$result = $service->events->move('primary', 'eventId', 'destinationCalendarId');
// Print the updated date.
echo $result->getUpdated();

Related

Some kind of Dashboard in FullCalendar

yeah what more to describe
I have no clue how to do that. Setup fullcalendar, fetsch data and enter data works fine.
The last thing I needit is a Dashboard under the Calendar witch get the selected week that visible in the Calendar (would be great when act also with the prev and next Arrow Buttons form the Calendar), and get the summary Events from selected Week witch holds already the durration of the single Events.
Do you know what a mean? and shy asking would you be ma hero?
Maby i found the Solution
main.js
weekNumberClassNames: function(view, element){ $('#card-title').html(calWeek); }
Let the magic happen by every view change, it also the WeekNumber change
A big part is solved.

Microsoft PowerApps | How to get calendar events from o365 connection?

I'm currently testing some stuff with Microsoft PowerApps. My aim is to create an app, which shows the calendar events of my office 365 account. I've applied the connection to office 365, and was able to get emails. But I don't know how to get the events, because nothing is documented. In the PowerAppStudio environment I can see that functions such as Office365.CalendarGetItem(... are available but the syntax is unclear. Please, can someone explain to me how to use it correctly.
My experience as follows;
You need to use
Office365Outlook.CalendarGetTables()
to get the Calendar object.Names and
Office365Outlook.CalendarGetItems()
To get the Calendar items for that object.
To demonstrate:
Add your Office365 outlook connector
Create a dropdown and take note of the name, or give it a new name
Set the Items value of the dropdown to Office365.CalendarGetTables().value
This gives you a your reference to get calendar items from - which you can now do with a gallery;
Add a gallery (I just pick a layout template I like and reconfigure)
Set the Items value of the gallery to Office365.CalendarGetItems(YourDropDownName.Selected.Name).value
where YourDropDownName is the name of the dropdown you created.
It will, by default, list from today's meetings onwards.
There are some filter options with CalendarGetItems, the syntax is as follows;
Office365Outlook.CalendarGetItems (string table, [advanced][Optional]string $filter, [advanced][Optional]string $orderby, [advanced][Optional]integer $skip, [advanced][Optional]integer $top)
I use this great reference as well PowerApps reference
You need to select a calendar where the items will be read.
Office365.CalendarGetItems(name of your calendar).value
Add the Office 365 connector as a connection
Create blank form
Add a listbox
Set ListBox>Items = Office365.CalendarGetTables().value.DisplayName
Add a gallery
Change gallery style to be Title and subtitle on Data tab
Dry gallery>Items = Office365.CalendarGetTables().value
You can now see your calendars and their names.
I'm going to futz around further with this...
In the "My experience" answer, I had to change "Office365." to "Office365Outlook.". I suspect content errors as the example of advanced options used "Office365Outlook.CalendarGetItems".
So
Office365.CalendarGetTables().value
Office365.CalendarGetItems(YourDropDownName.Selected.Name).value
became
Office365Outlook.CalendarGetTables().value
Office365Outlook.CalendarGetItems(YourDropDownName.Selected.Name).value
My Power Apps data source was "Office365Outlook" and my own email account at https://outlook.office.com/mail/inbox .
These worked for me.

Handle Appointment drag'n'drop, subject change on calendar, and change through ICS file in Outlook

I'm developing an Outlook AddIn using the NetOffice library, but I guess the problem is similar for VSTO.
I want to handle following events in Outlook regarding appointments:
The user drag'n'drops appointments to change the date of the appoinment
The user double clicks the appointment subject and edits it directly on the calendar
The user gets an ICS file by email which updates some data on the appointment
So that's pretty easy:
var exp = App.Session.GetDefaultFolder(OlDefaultFolders.olFolderCalendar);
(exp.Items as Items).ItemChangeEvent += Addin_ItemChangeEvent;
So now on each case I need, my event handler fires up. However the problem is, that I need to recognize, if the change on the appointment is because of user action on the calendar or an ICS file received.
I really stuck on that one, any tips?
You can use marks for that. I try to explain my solution. In each outlook item (it can be AppointmentItem and MailItem) you have a property UserProperties, you can create mark variable like a string public const string ICSMark = "ICSMark"and add new user property with this mark appointmentItem.UserProperties.Add(ICSMark, OlUserPropertyType.olText);. When you event is occurs you can check your item for this mark UserProperty mark = appointmentItem.UserProperties.Find(ICSMark);, if mark is not null, it was updated from ICS file.

Kendo UI scheduler: make appointments that occur in the past 'read-only'

Is there a way to make appointments slots and grid cells that occur in the past read-only in the Kendo scheduler? It would be fantastic if the grid was editable, but only for slots that occur in the future.
I would like appointments that occurred in the past to not be movable, resizable or destroyable.
Ideally, I would still be able to double click on them to load my custom form as read-only so people can still view the details of the reservation. I would then use template logic to make those fields read-only.
Just a mock-up of how I would do it... you'll probably have to do that with all the previously mentioned events though.
---> outside your scheduler but still accessible to it
var today = new Date(milliseconds);
---> events in your scheduler - in this case the edit option...
edit: function (e) {
if (kendo.toString(e.event.end, "fff") < today ) {
e.preventDefault();
}
else {
console.log("Hope that helps?")
}
}
Hope it helps!

"Read" Event for Mailitem in Outlook 2007 VSTO VB.NET

Okay, this is a bit of a tricky one...
I am programming an add-in for MS Outlook 2007, using VS 2010 and VSTO, and VB.NET. My goal is to prompt the user to print off emails that they receive from certain email addresses. (This would be done with a simple MsgBox.)
Specifically, I would like the prompt the user when they are done reading the email. My concept is that it should work similarly to the "Read Receipt" functionality in Outlook. (You know, those annoying things..."The sender has requested a receipt that you have read this email blah blah")
So, the user reads the email, and then when they go to close the Inspector (or change focus to a different item if they are in Explorer view) the MsgBox pops up. I have noticed that the timing on this matches when the email becomes "read".
I have been chasing this across Google and MSDN and tutorial websites for a few days, here's what I've found:
Round 1:
The Mailitem object has an UnRead property, and it also has a PropertyChange event. I can use AddHandler for PropertyChange on every Mailitem in the Inbox, tying them into a single Subroutine that checks the argument of the PropertyChange event to make sure it's UnRead. Seems fairly workable, except that PropertyChange doesn't pass the calling object's identity, so I have no way of knowing what email in the Inbox just lost "unread" status.
In fact, none of the Mailitem events seem to pass their identity, probably because someone (MS I guess) assumes that you have a direct pointer to the Mailitem object in the first place. So this route doesn't seem to work.
Round 2:
I can grab all of the Mailitems in the Inbox into a collection, then restrict them to just the Unread ones.
Dim inbox As Outlook.MAPIFolder = Nothing
Dim WithEvents unreadItems As Outlook.Items
inbox = Me.Session.GetDefaultFolder(Outlook.OlDefaultFolders.olFolderInbox)
unreadItems = inbox.Items.Restrict("[Unread]=true")
Since unreadItems was Dimmed WithEvents, I could write a Sub to Handle unreadItems.ItemRemove, which would work fine. But the ItemRemove event has no object argument! Doh!
Round 3:
Let's say I do the opposite: I get the inbox contents and restrict to [Unread]=false, then use the .ItemAdd event. This would work to a degree, except that it would theoretically call whenever an "[Unread]=false" item was dumped into the Inbox by the user from any folder, not just a change from the Unread to Read group within the Inbox. So, unless I'm misunderstanding something here, also not an option.
Round 4:
Now, something I also thought of was simply Dimming the Inbox items collection WithEvents and going off the .ItemChange event, but this event doesn't really specify what changed about the object, so no dice.
In closing, I'm pretty darn stumped with this. I am very close to backing down from my goal. A lame alternative is to alert the user when they receive an email from one of the designated addresses (because I believe the Application.NewMail event won't give me any hassle). But then, I will have to simply alert the user--I won't prompt them to print an email they haven't even read yet.
This alternative is undesirable and I figured that I would present my problem for inspection and suggestion.
-Matt
P.S. I'm coming from making iPad apps with Objective-C, where I'm building most of the object hierarchy myself...it's weird to have to deal with COM objects that have such limitations.
I'm not quite sure how you want your UI to behave, because it's not quite clear when the user is done reading their email. One way to look at it is that they are done when they have looked at it, meaning that the inspector window has shown the mail and the user is switching to another one. To catch that, you would probably be best off watching events from the inspector, not the mail items.
The other way to look at it is that a mail is read whenever it is marked as Read. Be aware that the user may actually turn off the option to mark items as read automatically! This can be done in Tools->Options->Other->Reading pane, like this:
Also, the user may select items and mark them as read manually, so you need to think about what you want do in that case.
If you want to watch for the change in "read" property of the MailItem, you are very close in round 1. The thing you need to add is that you shouldn't tie all of your handlers to a single subroutine in a single object instance. Instead, you can create your own class, something like this (C# code):
class ItemWatcher
{
// The Outlook mailitem to watch for
private Microsoft.Office.Interop.Outlook.MailItem itemBeingWatched = null;
public ItemWatcher(Microsoft.Office.Interop.Outlook.MailItem item, Form1 parentForm)
{
itemBeingWatched = item;
itemBeingWatched.PropertyChange += new Microsoft.Office.Interop.Outlook.ItemEvents_10_PropertyChangeEventHandler(itemBeingWatched_PropertyChange);
}
void itemBeingWatched_PropertyChange(string Name)
{
// Respond to property <Name> in the object itemBeingWatched having changed
}
}
Then you need to create a collection of your ItemWatcher classes and set them to watch your emails.
Note that you will also need to watch for items you need to add/remove from your collection of watched items, when a new mail arrives or an old mail is deleted/moved.

Resources