Office Add-ins deployment
25 TopicsEnhanced Document Control/Protection APIs in Office.js for Word Add-ins
We are developing a Word add-in using Office.js and JavaScript APIs. Our use case requires advanced document control features, which are currently challenging to achieve within the existing Office.js framework. Here’s our feature request: Proposed Functionality: Based on the defined custom properties on a document via add-ins, provide APIs/commands/hooks to disable or override Word's default 'Save,' 'Save As,' and 'Share' options to prevent users from saving or sharing the document locally. Introduce additional APIs for implementing custom protection mechanisms within the add-in. Current Challenges: Achieving this functionality appears possible through VSTO add-ins, but they are not compatible with Office.js solutions. VSTO/.NET commands require complex workarounds, such as creating a separate .NET server to communicate with Office.js, which adds development complexity and affects efficiency. Request: We would greatly appreciate the introduction of built-in, efficient APIs in Office.js to handle document protection and control scenarios seamlessly without relying on external frameworks or services. This would significantly enhance the capability of modern web-based add-ins and improve the development experience for Word add-in developers.Extend OfficeExtension.EventHandlerResult API
Notice: this would benefit all Apps for Office Addins that expose events with OfficeExtension.EventHandlerResult<>. Currently, when adding an event handler to Excel.Table.onSelectionChanged, the returned OfficeExtension.EventHandlerResult object is only valid within the current JavaScript session. If the session is lost (e.g., due to add-in reload, debugging, or errors), there is no way to retrieve and remove previously attached event handlers. This leads to "zombie" event handlers accumulating in an Excel session, particularly during development. While removeAll() is an option, it indiscriminately removes all handlers, including those registered by other add-ins, which is not ideal. There is no way to enumerate existing event handlers attached to an event. There is no way to retrieve a reference to a previously attached handler after the session is lost. There is no unique ID assigned to handlers that would allow selective removal. I propose adding an API to manage event handlers more effectively, such as: Retrieve a list of active handlers for a given event (getHandlers() method). Assign unique, retrievable IDs to event handlers, allowing for selective removal (removeById(id)).Extension should grab focus when opened
When opening a task-pane based extension, the page that is loaded should automatically be granted (or have an option to automatically grant) keyboard focus. This would save our users clicks, as the workflow is: open the extension with a button from the Ribbon click into the extension's pane use the keyboard to navigate options / use hotkeys to make selectionsWorksheet OnChanged event should return details when multiple cells are edited same as single cell
Description I am using the Worksheet.OnChanged event in office.js to capture valueBefore and valueAfter for cell changes. When I change a single cell, the event provides the details object with changeType: "RangeEdited" along with valueBefore and valueAfter. However, when I edit multiple cells at once (e.g., deleting/copy-pasting values into a range), the details object is undefined. This makes it impossible to track value changes for multiple-cell edits. Below is a screenshot showing both scenarios. Expected behavior The details object should provide valueBefore and valueAfter for all modified cells, similar to how it works for a single cell. Current behavior For multiple-cell edits, details is undefined, making it impossible to track the changes. Steps to reproduce Register Worksheet.OnChanged event to capture valueBefore and valueAfter. Modify a single cell → details contains valueBefore and valueAfter. Modify multiple cells at once (e.g., delete a range of values) → details is undefined. Useful logs Here are screenshots when using the Worksheet.OnChanged event: When "RangeEdited" in a single cell: When "RangeEdited" in multiple cells or range: Purpose of submission This concern is raised because when using Excel's built-in Review → Show Changes, it correctly tracks before and after values for the same range "CD:C4". Useful Links Bug reported on office.js GitHub: https://github.com/OfficeDev/office-js/issues/5347Find all installed JS add-ins via the Office JS API
Currently the only way to determine the JavaScript add-ins installed in Excel, Word, or PowerPoint is to navigate to either of the following menu items: File > Get Add-ins > Office Add-ins Home > Add-ins > More Add-ins > Office Add-ins Under 'Office Add-ins' you can select 'My Add-ins', 'My Organization', and/or 'Admin Managed' to find the JavaScript add-ins installed, and how they were deployed. It would also be helpful to enhance the Office JavaScript API so you can: Get back a list of all installed JavaScript add-ins Get back a list of all installed JavaScript add-ins categorized/bucketed by 'My Add-ins', 'My Organization', and/or 'Admin Managed' We have seen instances where a JavaScript add-in exist under 'My Add-ins' and 'Admin Managed' as the user initially installs the add-in, but then the IT deploys the add-in. Get back any metadata like the version, install/update date, etc. Provide a specific add-in name get back if installed, how it was installed: 'My Add-ins', 'My Organization', and/or 'Admin Managed', and any metadata that can be included like version, install/update date, etc. Offering this feature via the Office JavaScript API would allow for installed applications and troubleshooting tools to be able to quickly and easily gather this information to determine if the JavaScript add-in has already been installed notify the user when the JavaScript add-in is already installed vs when it still needs to be installed debug issues or other vendor add-in conflicts identify equivalent add-ins that may both be installed (COM/XLL/Automations vs. JavaScript add-ins) Microsoft could potentially leverage this Office JavaScript API enhancement to display JavaScript add-ins within Desktop Office apps under File > Options > Add-ins. This would allow users to see their legacy and JavaScript add-ins in one single location.Enable OEM pre-installation of Office Add-ins (webaddin type) with LLM dependencies
Is your feature request related to a problem? Please describe. As an OEM developing an AI-powered Outlook add-in that utilizes local Large Language Models (LLMs), we face a significant deployment challenge. Currently, there's no official mechanism to pre-install Office add-ins and their associated large dependencies (2-3GB LLM files) during machine manufacturing. This forces users to download both the add-in from AppSource and the large LLM files separately after OOBE (Out-of-Box Experience), which creates several issues: Poor initial user experience due to lengthy download and setup process Reduced user adoption rates due to installation friction Unnecessary bandwidth consumption for mass deployments Potential installation failures in environments with limited internet connectivity Describe the solution you'd like We propose implementing an OEM-specific deployment mechanism that allows: Pre-installation of Office add-ins during machine manufacturing phase Ability to package and pre-deploy large dependencies (like LLM files) alongside the add-in Auto-registration of the add-in with Outlook during OOBE A standardized directory structure and manifest configuration for OEM-deployed add-ins Security measures to verify the authenticity of pre-installed add-ins This would enable OEMs to provide a seamless out-of-box experience where users can immediately start using AI-powered add-ins without additional downloads or setup steps. Describe alternatives you've considered Enterprise deployment through Intune/Group Policy - Not suitable for consumer devices Custom installer packages - Lacks official support and may break with Office updates Network share deployment - Requires corporate network, not suitable for consumer scenarios Web-based LLM instead of local - Compromises privacy and increases operating costs Additional context This feature would be particularly valuable for: OEMs shipping devices with pre-installed productivity solutions Enterprise scenarios requiring offline deployment of add-ins Educational institutions deploying standardized software packages Scenarios where bandwidth conservation is critical The ability to pre-install add-ins would significantly improve the reach and adoption of Office add-ins while providing a better user experience aligned with modern AI-powered productivity tools.Option to disable QUIC in WebView2 used by Office Add-ins
Some of our customers block QUIC traffic from their end users' machines. This is often because their firewall is unable to inspect TLS traffic when sent over QUIC, or they block all UDP traffic by default. Web browsers like Edge offer a way to disable the QUIC protocol through a group policy. However, these group policies intentionally don't apply to WebView2 applications. We would like to offer our users an option to disable QUIC in the WebView2 used by our add-in. We have found that trying to use QUIC when UDP traffic is blocked may result in degraded performance or even prevent the add-in from making HTTP requests to servers that support HTTP/3.1.6KViews2likes2CommentsPinned add-ins shouldn't be pushed out of view when sender address is long enough
(This was originally posted as a bug to https://github.com/OfficeDev/office-js/issues/4954) In New Outlook and Outlook on the Web, pinned add-ins are pushed out of view when sender address is long enough. All items on the message surface are pushed to the overflow (...) menu - Reply, Reply All, Forward, add-ins, Apps. The last one standing that won't be dropped is the Emoji button. Currently, sender address doesn't even have to be as long as in the screenshot above for the items to be pushed out of view. Current behavior All items on the message surface are pushed to the overflow (...) menu - Reply, Reply All, Forward, add-ins, Apps. The last one standing that won't be dropped is the Emoji button. This makes it really hard to increase the adoption of critical add-ins in a company. If both the Apps and web add-ins are pushed to the overflow menu, the Apps item appears as its own item in the overflow menu. However, it's actually a sub-menu that contains all the user's add-ins. The Apps menu item doesn't indicate it's a sub-menu which you can open, so end users fail to find their add-ins. Expected behavior Sender address should be wrapped in such manner that items on the message surface are not moved - there's no reason for the sender address to take over their space. Steps to reproduce Use either New Outlook for Windows or Outlook on the Web. Locate an email that has longish sender address. See how items on the message surface start to disappear. To increase the effect, decrease the width of your window - more items are dropped out of view.How to get current page number and the total page count of a document using Word Add-in office.js
I would like to inquire if there is a method or feature available in Office.js for programmatically obtaining the current page number and the total page count of a document. Specifically, I am interested in accessing this information within the Microsoft Word application. Additionally, if such a feature is not currently available, do you have any plans or information regarding the potential release of this feature in the future? It's worth noting that our organization does not use OneDrive for any operations. Here are the details of my environment: Platform: PC desktop Host Application: Microsoft Word Office Version: Microsoft Word for Microsoft 365 MSO (Version 2304 Build 16.0.16327.20200) 64-bit Operating System: Windows 10 Pro Thank you for your assistance.Add-in manifest: increase maximum Image ID attribute length to 64 symbols
When I attempt to validate the manifest with reasonable icon names like "RemoveVelixoFormulasInCurrentFile.80x80" we're receiving an error that it's too long: id: '432d95ab-aa94-4329-a37c-de84b2aeb401', title: 'XML Schema Validation Error', content: 'Error found during XML Schema validation.', code: "The 'id' attribute is invalid - The value 'RemoveVelixoFormulasInCurrentFile.80x80' is invalid according to its datatype '[http://schemas.microsoft.com/office/officeappbasictypes/1.0:ImageReferenceId]' The actual length is greater than the MaxLength value.", We have many icons, too. From my perspective it doesn't make sense to have IDs so short, could it be at least 64 symbols? We're using office-addin-manifest and .validateManifest function to validate the add-in manifest upon build.