Есть ли какой-либо способ передать параметры конфигурации надстройке Outlook

#javascript #parameters #outlook #outlook-addin

#javascript #параметры #outlook #outlook-надстройка

Вопрос:

У меня есть надстройка JS Outlook, которую я хотел бы иметь возможность развертывать на нескольких сайтах, но я хотел бы развернуть один и тот же код на каждом сайте и, по возможности, обрабатывать данные конфигурации извне. Что-то вроде process.env (это работает для Node.js серверное приложение) для клиентского приложения. Я вижу, что можно определить параметры приложения в Azure, но как я могу получить доступ к значениям в приложении?

Комментарии:

1. Можете ли вы внести некоторую ясность в то, что вы пытаетесь сделать? (Просто чтобы убедиться, что вы имеете в виду надстройки Outlook, такие как эти: docs.microsoft.com/en-us/office/dev/add-ins/outlook /… ) существует API настроек роуминга, но я не уверен, соответствует ли это вашему сценарию. Итак, если вы можете более подробно описать, что конкретно вы хотели бы сделать, это может помочь.

2. Да, эта ссылка относится к типу надстройки, которую я использую. Фактические данные конфигурации, которые мне нужны, — это идентификатор (веб-адрес) Node.js серверное приложение; в настоящее время у меня это жестко запрограммировано, что является неудовлетворительным. Спасибо

3. Это жестко задано в манифесте надстройки Outlook или в JavaScript для надстройки? И для настроек приложения Azure это то, что вы имеете в виду? docs.microsoft.com/en-us/azure/app-service/configure-common

4. Жестко запрограммированный в приложении (JS) — AFAIK, приложение не может получить доступ к манифесту во время выполнения, иначе это может быть решением. Повторите настройки приложения, да, это соответствующая ссылка.

5. Да, это точно. JS надстройки не может получить доступ к манифесту во время выполнения. Поскольку надстройка загружает URL-адрес, указанный в манифесте, вы можете использовать строки / параметры запроса в URL-адресе и получать к ним доступ во время выполнения. Это сработает? Я не очень хорошо знаком с настройками приложения Azure, поэтому дайте мне знать, если я что-то здесь упускаю.

Ответ №1:

Если вы можете распространять разные манифесты для каждого клиента, вы можете добавить параметр запроса к любым URL-адресам SourceLocation в манифесте для передачи информации надстройке при запуске.

 <bt:Url id="Taskpane.Url" DefaultValue="https://contoso.azurewebsites.net/Taskpane.html?<per-customer query string>" />
 

Ответ №2:

Спасибо команде надстроек Outlook, это работает нормально; в интересах любых других читателей несколько деталей

  1. Извлечение значения параметра в целевой JS упрощается с помощью URLSearchParams()
  2. Это решение концентрирует различия между клиентами в манифесте, оставляя основную часть решения в JS, которая одинакова для всех развертываний, что является ключевой целью
  3. В качестве отступа: отклонения клиента от манифеста могут быть сведены к минимуму с помощью ~remoteAppUrl

Ответ №3:

Я хочу расширить ответ @JohnD для всех, кто хочет иметь пример:

1. Прикрепите параметр запроса к URL-адресу панели задач:

 <bt:Url id="Taskpane.Url" DefaultValue="https://localhost:3000/taskpane.html?param=myParameter"/>
 

2. Получите параметр в JavaScript

 let queryString = window.location.search;
// ?param=myParameter
let param = new URLSearchParams(queryString);
// param=myParameter
let myParam = param.get("param");
// myParameter
 

Это пример того, как его использовать. Надеюсь, это поможет.