Как выполнить console.info после запуска события ItemSend в надстройке Outlook JS

У меня действительно проблемы с событием ItemSend из-за генератора йо, предоставленного надстройками MS Outlook, который использует веб-пакет для связывания кода, не подвергая глобальную область действия необходимым функциям для события.

У меня есть правильный XML в манифесте

<ExtensionPoint xsi:type = "Events">
  <Event Type = "ItemSend" FunctionExecution = "synchronous" FunctionName = "itemSendHandler" />
</ExtensionPoint>

И itemSendHandler глобальный, мой main.js

import { updateEventMetadataToServer, getUserCktId } from './cktApi.js'
import { initializeForm, fetchEventDataFromOutlook, fetchEventDataFromServer, setMsgOnFormConsole } from './form.js'
import { storeEventMetadata, loadEventMetadata, loadCustomProperty } from './outlookApi.js'

window.itemSendHandler = itemSendHandler 

test1 = 1 // for debug
function itemSendHandler (event) {
  fetchDataFromOutlookAndSubmitOrUpdateEventToCkt((err) => {
    if (err) {
      Office.context.mailbox.item.notificationMessages.replaceAsync('NoSend', { type: 'errorMessage', message: err.message })
      setTimeout(() => { event.completed({ allowEvent: false }) }, 3000)
    } else {
      const message = {
        type: Office.MailboxEnums.ItemNotificationMessageType.InformationalMessage,
        message: 'Event submitted/updated to CKT' + test1,
        icon: 'Icon.80x80',
        persistent: true
      }
      Office.context.mailbox.item.notificationMessages.replaceAsync('action', message)
      setTimeout(() => { event.completed({ allowEvent: true }) }, 10000)
    }
  })
}

function fetchDataFromOutlookAndSubmitOrUpdateEventToCkt (_callback) {
  const callback = (err) => {
    if (typeof _callback === 'function') {
      _callback(err)
    }
  }

  fetchEventDataFromOutlook((err) => {
    if (err) {
      console.error('There was some error fetching data from Outlook:', err)
      callback(Error('There was some error fetching data from Outlook to CKT Addin'))
    } else {
      console.success('Data fetched from Outlook assigned to form')
      test1 = 20
      loadEventMetadata((metadata) => {
        console.info('METADATA loded from Outlook: ', metadata)
        test1 = JSON.stringify(metadata) + ''
        submitUpdateEvent(metadata, (err) => {
          if (err) {
            console.error('There was an error on submitUpdateEvent', err)
            callback(Error('There was some error submitting/updating the event to CKT server'))
          } else {
            console.success('Data submited/updated to server')
            callback()
          }
        })
      })
    }
  })
}
  • Любая идея, как выполнить console.info в консоли Edge/webview2 DEV после того, как мы нажмем кнопку «Отправить»? Я не могу просто отладить, потому что после нажатия кнопки «Отправить» console.info не отображается. Я утешаю для отладки на Office.MailboxEnums.ItemNotificationMessageType.InformationalMessage, что довольно странно
  • Любая идея, почему loadEventMetadata извлекает metadata в нормальных условиях, но терпит неудачу при запуске itemSend?

Просто чтобы подтвердить, что вы пытаетесь отладить это на платформе Win32?

Outlook Add-ins Team - MSFT 16.03.2022 20:44

@OutlookAdd-insTeam-MSFT Я использую Window 10 с ежемесячной подпиской на Outlook 365. Обычный экземпляр, который я могу отлаживать с помощью инструмента WebView2/Edge dev. Но я не могу отладить экземпляр отправки элемента.

João Pimentel Ferreira 16.03.2022 21:01
Стоит ли изучать PHP в 2023-2024 годах?
Стоит ли изучать PHP в 2023-2024 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
0
2
25
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Взгляните на эту документацию: https://docs.microsoft.com/en-us/office/dev/add-ins/outlook/debug-autolaunch

На самом деле это не ваш сценарий, но работает тот же ключ. (Убедитесь, что рядом с вашим идентификатором надстройки нет "{}". Поэтому установите следующий regkey:

HKEY_CURRENT_USER\ПРОГРАММНОЕ ОБЕСПЕЧЕНИЕ\Microsoft\Office\16.0\WEF\Developer\5283AFBB-806E-2D05-BBAF-EF3384D30022

[Замените GUID собственным идентификатором надстройки]

И в этом кусте ключей установите DWORD UseDirectDebugger = 1.

Когда ваша надстройка запускается (панель задач, функция выполнения, отправка элементов и т. д.), вы должны получить диалоговое окно, которое выглядит следующим образом:

Оттуда вы можете подключить отладчик к WebView и отлаживать надстройку, а затем нажать «ОК».

Другие вопросы по теме