Which Office JS functions work differently on the Mac Excel client? - excel

My Excel add-in works perfectly fine in Excel client for Windows, Excel Web on a Windows browser and Excel Web on a Mac browser. However, it fails with a "GeneralException" in the Excel client for Mac. My add-in only uses the published Office API functions + JQuery and does not use the file system or any other external services.
Isn't the Office-js api cross-platform? Are there any functions that work differently? My add-in failure seems to occur when it adds named ranges and validations. Because it works fine when I run it on the browser, I can't even debug this further. If you have encountered a similar issue and/or have a solution, I'd appreciate hearing from you.

Unfortunately, it looks like a bug in the Excel client for Mac that is getting no love or attention from Microsoft. To circumvent it, I had to resort to conditionally removing the feature with something like this:
if (Office.context.platform === Office.PlatformType.Mac) {
console.log("Yep, I'm on the darn mac client");
//disable feature...

All the released Excel JS APIs are cross-platform. If you see a difference in behavior, please send the sample scripts that can reproduce the problem, and we can investigate that caused that. Thanks.

Related

How to implement more than on Tab for Chromely based Browser (it should work on Windows and on Linux)?

I want to implement a browser based on Xilium.CefGlue that works on Windows and on Linux
I found a solution with Chromely. I implemented the Browser according to this Chromely tutorial and it works fine on Windows and on Linux.
Now I want to have more than one tabs. It seems to be possible, but chromely have to be extended as mentioned here.
I tried to use Avalonia and Chromely, but the are not compatible.
I found this question talking about a "Chromely.CefGlue.Gtk.Linux.Demo"-Project but no code of that project.
Can someone help me please?

How to manage production vs. deployment URLs in office add-in manifest?

I am building an outlook web add-in, and while I am developing I will be hitting a localhost url, but when I deploy I'll of course want to point to my production web server.
I found Specify value for ~remoteAppUrl in an Office add-in manifest which is related, but it seems to rely on using Visual Studio to replace a token in the manifest. I'm developing with Atom on a Mac, so that's not really an option for me. I'd rather not duplicate my entire manifest file if possible. I'm guessing that I'll need to create a find-and-replace script. Or is this already a solved problem and there's something out there I don't know about? :) Thanks!
There is no way to specify separate URLs in the manifest for development and production, and unfortunately no plans to add this in the near future. Find and replace (or a script that does so) is your best option currently.

Word Addin - how to check if the createDocument() function is available?

I am using Office JS to develop a Word addin.
Thanks to previous answers, I found that I can open a new document in Word by doing:
context.application.createDocument().open();
However, that seems to only work on the Desktop version of Office.
If I try that same addin in the online version, I get an error:
Sorry, this function isn’t available. Perform a runtime check on the Office add-in to find out whether the feature is supported by the host
How can I programatically find out if that function is available so that I can make the plugin default to a different behavior if it's not?
Also, is there some documentation on the createDocument function? (I googled and could not find anything).
In the general case, you should use the isSetSupported API check at runtime to be able to see whether a particular method is available. See https://dev.office.com/docs/add-ins/develop/office-js-versioning
In this particular case, you're running into the fact that createDocument is part of a not-yet-released (preview-only) WordApi 1.4 (PREVIEW) API set (you can see it in the IntelliSense, both in the d.ts file (TypeScript) and vsdoc (JavaScript in VS 2015 and earlier). For example, in https://github.com/OfficeDev/office-js/blob/beta/dist/office.d.ts
Because it's Preview, this unfortunately means that isSetSupported will return "false" regardless... because it simply might not be reliably available anywhere yet (or at least, the team has not signed off on it being done and available). So for these Preview APIs, it's really meant just for your own dev testing, not anything you would use in production.

Copy/Paste from Excel to a WebApp

I have to create a Web app which can allowed to copy from excel and paste on the web and get exacly the same thing and vice versa.
I don't know many things on web development but I found some solution like :
-sharepoint and office web app
-asp.net + ajax
-make a add-in in excel to send elem on a server (but the project will be only on excel
with this solution)
-HTML + PHP with PHPExcel.
Are there others solutions or which one of these is the best?
Thanks
a client side solution
have a look handsontable jquery plugin. u can use copy/paste from excel
http://handsontable.com/
if you want to do it in server side just two for statement parse all. lots of class available for parsing.
i use spreadsheetgear core in my .net refrence and use of many capabilities of:
http://www.spreadsheetgear.com/
it seems perfect!

SharePoint - Posting and Retrieving files Automatically via VBScript

I'm going to need to push and pull files from a SharePoint site that is not hosted by my company (it is external). I'm only going to get a few days (if that) to get this working so I don't have much time to experiment.
To add to my requirements/headaches, I'm going to have to implement this with VBScript. .Net would be preferred for me but for reasons beyond my control I have to use VBScript. I don't have direct access to my VBScript web server, so I won't be able to implement this in .NET and use that object from VBScript.
I'm looking for anything that would help me accomplish this goal quickly and effectively. I found this post and am wondering if the PUT/GET method used here would work for me?
http://weblogs.asp.net/bsimser/archive/2004/06/06/149673.aspx (I got this link from: Sharepoint API - How to Upload files to Sharepoint Doc Library from ASP.NET Web Application)
To top all of this off, I've never done any programming or administration of a SharePoint site. My knowledge of SharePoint is that of a user. I'm aware that there is an API from the few Google searches I did. However, my readings make me believe that my code would need to run on or in proximity to the SharePoint server. I don't believe I have the proximity I need to use the API.
Sincere thank yous!
Regards,
Frank
Progress Update: I'm still researching this. Tom pointed out that the example I had posted is probably from an old SharePoint version. His recommendation to use .Net to develop a prototype on Web Services is good but I'm hoping for more detailed answers.
I'm now wondering if I can accomplish what I need to accomplish using HTTP PUT and GETs. At my company, for a specific project we do use HTTP PUT and GETs to do something like this. We have files that are stored on an HTTP server and this is how we post and retrieve them.
Would this work over SharePoint or would SharePoint require special handling? Basically, do I have to use Web Services?
Progress Update 2: This link is helpful... Upload a file to SharePoint through the built-in web services
But I am still looking for more information on this topic... Thanks all...
You'll need to use the sharepoint lists web service for metadata and get/put for uploads. That link looks to be for SharePoint 2001, so hopefully you can use the newer/simpler version.
I recommend building something in .net first to get the web service calls worked out - some of the parameters can be quite tricky to debug, and I wouldn't want to be doing that on a remote vbscript page.
Assuming there is no metadata required and the SharePoint library is being used like a file server you can do most of what you want with PUT/GET, but you will probably need a call to GetListItems to find the urls to download.
There's an example on my blog of a lower level call to that web service - it's javascript, but probably close enough.
http://tqcblog.com/2007/09/24/sharepoint-blog-content-rating-with-javascript-and-web-services
What setting up the .net version gets you is very quick set up of a connection to the server (just add a web service reference in visual studio) so you can get the query and queryoptions strings working to retrieve the items you want. Once that works you just have to put it all together as a string including the soap stuff for use without all the nice tools.
I'm a little unclear on the context of the implementation and the prerequisite of having to use VBScript. Are the files being moved from one server to another server or from a user's desktop to this SP server? or are they being accessed via software like Excel?
The first thing that sprang to my mind (this may sound crazy) was using the Office application to make the connection. Your script would call up Excel (just as an example) and pass it the vba needed to initiate the Open File, and then provide the full path to the file that needs to be retrieved. Then have it do a Save As to the location that needs the file. Do the same thing but in reverse for putting files on the SharePoint server.
The tricky part, obviously, is getting the script to interface with the Office app. I know this can be done with the Windows version of PHP, but I don't want to get into anything specific without knowing your situation.
I seriously wonder if you are going to be able to use VBScript to call the SharePoint web services. I haven't looked at the SharePoint web services for a while so I don't remember exactly how they are defined. I thought the web services were SOAP calls though which makes it trickier than
I'm not sure I tried to use Excel to call some web services with the MSSOAP.SoapClient and it seemed this component was unable to handle any WSDL types beyond the very simple strings. Anything with nested data would not work. Instead, you would need to create a COM object to process the conversion which is a major hassle. If you are able to use XMLHTTP component then it might be possible with VBScript, but I'm not sure if it will work with SharePoint web services.
I'm not sure what you mean, "I don't have direct access to my VBScript web server." Is your web server in VBScript (ASP)? Or did you mean SharePoint server?
You might consider C# Script (cs-script) as a scripted solution that uses .NET. I have had good success with it, although it does need to be installed on the computer that runs the script.
I'm integrating between two companies. According to this book, we should use AD FS to accomplish what I'm looking for.
I still don't actually have this working though so if someone has more information I will change the answer to this question.
http://books.google.com/books?id=-6Dw74If4N0C&pg=PA27&lpg=PA27&dq=sharing+sharepoint+sites+external+adfs&source=bl&ots=ojOlMP13tE&sig=FjsMmOHymCOMGo7il7vjWF_lagQ&hl=en&ei=ytqfStClO5mMtgejsfH0Dw&sa=X&oi=book_result&ct=result&resnum=5#v=onepage&q=&f=false
I never really received a answer to this that worked out but this is no longer an issue for me.
What we ended up doing is scraping the html. In effect, we put together our own ad-hoc web service processor where instead of SOAP, html is used to communicate. Then we execute GETs, POSTs, and etc to work with the web service.
We had done something similar in VBScript in for WebDAV -- we had a class and created a new one to work with SharePoint.

Resources