Save XML in Outlook public folder - outlook

May this is not the right place to ask, but prior to an Outlook plugin development I would like to get clarification.
As I understand, public Outlook folders used to share information among several accounts.
Can I save XML files, or that sort of files, in the public folder, or only Outlook objects such as Tasks, Notes?

Related

Delete or replace an image in PowerPoint using OfficeJS

I am building an Office JS add-in for PowerPoint, which operates on images of a certain type. I want to be able to delete or replace/update such images, but I cannot find the correct APIs to do this either on a single selected image or even any old image(s).
The Office JS API does not appear to have any PowerPoint specific methods, so it seems I will have to rely on what is available in the Common API. There is no obvious delete method visible.
I am already calling GetFileAsync (similar to this guide) in order to look at the file contents. I could presumably modify those contents, but haven't tried, since I cannot see an API that allows me to re-save those modifications.
Have I missed any useful info?

Is it possible to target Office Add-Ins in the Ribbon based on AD Properties?

I am trying to build a new add-in command (button) to add to the Home tab in the Outlook ribbon. This is easy enough to do, but my organization also wants to target the button based on properties in one's Active Directory profile (specifically department). Is this possible? Thank you so much!
This is pretty straightforward with desktop office add-ins (like VSTO). All you need to do is basically to get information about the currently logged in user organizational unit from the active directory, and then show/hide/modify buttons depending on this information.
From the tags on your question, it looks like this is NOT what you are looking for (please correct me if I am wrong)? The fact that you added "office365", probably means that you are interested in javascript (cloud/browser/store) solution?
For javascript-based add-ins, the part where you get the user department from its profile was impossible until recently. Now you may check out the Single-Sign-On API (added last year). It provides you information from user's Azure active directory profile, meaning that your organization is supposed to be part of it.
Another difficulty could be, dynamic display of the related buttons (showing/hiding/enabling/disabling) (I may be wrong, but it looks like it is still not supported for javascript). You can try to create a workaround for that by building a custom task pane instead (you can do whatever you want on your task pane)
--- update ---
In case of .NET VSTO add-in, you can get user groups using:
UserPrincipal.Current.GetAuthorizationGroups()
Then you can control which buttons/controls to show/hide by providing callback function(s) in your code and in your ribbon interface definition file (you need to define Ribbon using XML, not with UI designer). There are callbacks available like getVisible, getLabel, etc.

How to share user roaming settings between Outlook COM/VSTO and Office JS Add-in

Is it possible to share user’s roaming settings and preferences between COM/VSTO Outlook and Office JS Add-ins?
Scope
The following article covers an approach for developers to make a bridge between COM/VSTO Outlook Add-in and Office JS Add-ins to share user’s roaming settings and preferences.
Introduction
There are plenty of companies who deliver reach experience to their customers through COM/VSTO Outlook Add-ins for ages and Outlook 2000 to the latest version support is normal for them. With maturity of the Microsoft Office Store and technology behind Office JS Add-ins more and more companies looking to implement their existing solutions using Office JS API. Ability to write once and distribute easily the application for environments where Office works is very attractive point. But what about customers who still use old reliable Office 2010 or even older. You may say: “Let them use our old COM Add-in and don’t look back”. Well this may be valid point until this customer start to use Outlook for Web and realize you’ve created the Add-in for this environment as well. Great! Start using it … but wait a second, where are my settings and preference I set at my work place when used desktop solution for Outlook? What if I would like to change my preferences? Now I have to do that twice? A developer would say: “Move on to our new solution, forget about old COM”. But users probably have a reason why they use old Outlook version with COM Add-in at work and OWA with new Office JS Add-in remotely (during a trip, work from home, etc.). The reader probably got my point by now. As the developer, you may want to make life of those customers simpler by sharing the preferences between your brand new and shiny Office JS Add-in as well as your old, but solid and full of features COM/VSTO solution. So, let’s find out how to do that.
Office JS Add-in Roaming Settings
Right from the requirement set 1.0 Office JS API RoamingSettings object was introduced with four methods to manipulate with user settings. You are able to set, get and delete any custom value of the user setting/property type of {String|Number|Boolean|Object|Array}. This object keeps those settings per user mailbox and will be available to your Office JS Add-in from any location, device, etc. True roaming to keep your user’s preferences and settings, isn’t it? Please note: You should not use this object to keep sensitive information such as user credential or security tokens. The following example demonstrate usage of the object:
// Get the current value of the 'myKey' setting
var value = Office.context.roamingSettings.get('myKey');
// Update the value of the 'myKey' setting
Office.context.roamingSettings.set('myKey', 'Hello World!');
// Persist the change
Office.context.roamingSettings.saveAsync();
COM/VSTO Add-in for Desktop Outlook
Let’s return to our COM/VSTO solution. There is the single pre-request: to handle the settings which were stored in the user’s mailbox developer needs to know Office JS Add-in ID as the RoamingSettings are stored per add-in and per user. Well, you would know it indeed, as this is your/your company Add-in. The settings we are looking for are stored in the message property, which is stored in Associated contents table of the Inbox folder may be accessed using IMAPIFolder interface. Wow, this was the key sentence from entire post and needs to be explained in details.
First you would need to enumerate all messages in associated contents table and find the message with the class “IPM.Configuration.ClientExtension.00000000000000000000000000000000”, where zeros must be ID of your Office JS Add-in.
When message selected, you would need to get “PR_ROAMING_DICTIONARY” Property.
This property will contain serialized data we stored as roaming setting when used Office JS Add-in in our example above:
<?xml version="1.0" encoding="utf-8"?>
<UserConfiguration>
<Info version="Exchange.12" />
<Data>
<e k="18-ExtensionSettings" v="18-{"myKey":"\"Hello World!\""}" />
</Data>
</UserConfiguration>
Your COM/VSTO Add-in will be able to read and modify those settings with simple parse. You may want to expose your COM Add-in user setting as well. Usually those settings developers keep in HKCU Windows Registry, to roaming world per user mailbox. The benefit of this not only in capability between Office JS Add-in, but separated set of settings of your Add-in per user mailbox. When those settings created from Desktop Outlook use different info version, for example:
<Info version="Outlook.16"/>
Conclusion
As the final note on the topic I would like to illustrate the simple example of shared settings of an application from the same provider where COM and Office JS Add-ins share user settings.
References
https://dev.outlook.com/reference/add-ins/RoamingSettings.html
https://msdn.microsoft.com/en-us/library/office/cc842083.aspx
https://msdn.microsoft.com/en-us/library/office/cc842374.aspx?f=255&MSPPError=-2147217396
https://msdn.microsoft.com/en-us/library/office/cc842386.aspx

Tiddlywiki: embed/link to .msg

I'd like to use Tiddlywiki for a personal knowledge base. In my work flow a lot of content comes in as Outlook emails threads.
Is there a smart way to refer to this content without fully copying over the whole text to each and every tiddler manually?
Maybe saving Outlook mail thread as .msg file, placing it locally and referring to that file might work. The tiddler then may hold some basic summy, but whole detail content lies in the .msg file.
Any ideas?
I am in such case (more struggling with TiddlyWiki, which is great but lacks documentation currently). I ended up using the outlook:oid url-style that opens the mail in outlook. However, it's difficult to retrieve a mail oid, especially as this id changes when copying (and maybe moving) the mail to other folders/pst files.
In my case, I use some outlook mailbox parser that detect specific markup (categories, actions), and take appropriate actions (move them, create the outlook:oid link somewhere, etc). It's ugly but does the job.
You've essentially answered your own question. Alternatively, use gmail or the likes to get proper links that only you can follow.

Visual Studio 2010 Extension for grouping files into folders

I'm looking for an Extension that allows me to group Files into Virtual folders.
Example:
I have a Solution with 3 Projects. UI (MVC), Security Layer, BusinessLayer/DAL.
Each of the 3 Projects have some classes/views that handles stuff for let's say "User Management":
UI : Views, Controller, ViewModels
Security Layer: Security Checks
BL/DAL: Business Logic, Data Access
What I want is an Extension like a "Logical Solution Explorer" where I can create Virtual Folders in it and put links to all "User Management" classes/views in it.
Is there something like that available?
I really like the Favorite Documents extension. It sounds like it could help. You can find more information about it at: http://www.svprogramming.net/favorite-documents/

Resources