У меня действительно проблемы с событием 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()
}
})
})
}
})
}
Office.MailboxEnums.ItemNotificationMessageType.InformationalMessage
, что довольно странноloadEventMetadata
извлекает metadata
в нормальных условиях, но терпит неудачу при запуске itemSend?@OutlookAdd-insTeam-MSFT Я использую Window 10 с ежемесячной подпиской на Outlook 365. Обычный экземпляр, который я могу отлаживать с помощью инструмента WebView2/Edge dev. Но я не могу отладить экземпляр отправки элемента.
Взгляните на эту документацию: 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 и отлаживать надстройку, а затем нажать «ОК».
Просто чтобы подтвердить, что вы пытаетесь отладить это на платформе Win32?