In up-to-date versions of Excel, you can use BroadcastChannel
(MDN) to send messages reliably between add-ins. (You may need to updated the add-ins to use the shared runtime, I'm not sure; but Microsoft recommends that anyway.) You need up-to-date Excel so your add-ins run in the Edge-based WebView2 (not the IE-based WebView, which didn't support BroadcastChannel
).
Messaging between loaded Office JS addins?
We have two separate Office JS addins for Excel (served from the same origin). Is there any way to do messaging between them? Something like postMessage
but we don't really care about the mechanism as long as there is one. We need it to work in Excel Desktop and also Excel for the Web.
Here's one use case: A custom functions addin (we have five of them) that can report custom function errors by sending a message to a task pane addin that displays them. We don't want each of the custom functions addins to have their own task pane, hence the messaging.
I've taken a stab at doing it fairly crudely via localStorage
and via OfficeRuntime.storage
, but I've found some really funky things in Excel Desktop. For instance, at one point addin A (task pane) wasn't seeing the things added by addin B (custom function) and I eventually found that addins A and B were running in different versions of Edge. (v99 and v100 respectively, IIRC). This was soon after Excel had updated. When it was happening, Edge itself was still saying it was v99. When that was happening, it happened both with localStorage
and with OfficeRuntime.storage
(which looked like it was just using localStorage
anyway, but hopefully behind the scenes there was more going on.) Seeing two different versions of the web control like that was ... troubling. But now I can't replicate it, they both say they're Edge v100 and they see the storage just fine. :-|
Some official messaging would be preferable.
TIA!
-- T.J.
1 answer
Sort by: Most helpful
-
T.J. Crowder 1 Reputation point
2022-09-04T08:29:56.65+00:00