#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, это работает нормально; в интересах любых других читателей несколько деталей
- Извлечение значения параметра в целевой JS упрощается с помощью URLSearchParams()
- Это решение концентрирует различия между клиентами в манифесте, оставляя основную часть решения в JS, которая одинакова для всех развертываний, что является ключевой целью
- В качестве отступа: отклонения клиента от манифеста могут быть сведены к минимуму с помощью ~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
Это пример того, как его использовать. Надеюсь, это поможет.