Office.context.mailbox.item.subject.getAsync 不是函数

问题描述 投票:0回答:2

要求: 通过 Outlook 插件 API 从 Outlook 收件箱获取电子邮件主题。

环境:

  1. Outlook 加载项(旁载)
  2. “邮箱”最小版本=“1.1”
  3. 视觉工作室代码

代码:

async function ReadEmailSubject() {
  document.getElementById("email-subject").innerText = ""; 
  Office.context.mailbox.item.subject.getAsync(function (result) {
    var emailSubjectDiv = document.getElementById("email-subject");
    if (result.status === Office.AsyncResultStatus.Succeeded) {

        var emailSubject = result.value;
        emailSubjectDiv.innerText = emailSubject;
    } else {

        console.error("Failed to get email subject: " + result.error.message);
        emailSubjectDiv.innerText = "Failed to get email body: " + result.error.message;
    }
  });
}

调试控制台:

TypeError: Office.context.mailbox.item.subject.getAsync is not a function
    at _callee2$ (e:\office-add-ins\Outlook\yo-main\Outlook Add-in\src\taskpane\taskpane.js:28:39)
    at tryCatch (e:\office-add-ins\Outlook\yo-main\Outlook Add-in\src\taskpane\taskpane.js:2:1)
    at Generator.<anonymous> (e:\office-add-ins\Outlook\yo-main\Outlook Add-in\src\taskpane\taskpane.js:2:1)
    at Generator.next (e:\office-add-ins\Outlook\yo-main\Outlook Add-in\src\taskpane\taskpane.js:2:1)
    at asyncGeneratorStep (e:\office-add-ins\Outlook\yo-main\Outlook Add-in\src\taskpane\taskpane.js:2:1)
    at _next (e:\office-add-ins\Outlook\yo-main\Outlook Add-in\src\taskpane\taskpane.js:2:1)
    at e:\office-add-ins\Outlook\yo-main\Outlook Add-in\src\taskpane\taskpane.js:2:1
    at new Promise (<anonymous>)
    at e:\office-add-ins\Outlook\yo-main\Outlook Add-in\src\taskpane\taskpane.js:2:1
    at _ReadEmailSubject (https://localhost:3000/taskpane.js:266:28) {stack: 'TypeError: Office.context.mailbox.item.subjec…t (https://localhost:3000/taskpane.js:266:28)', message: 'Office.context.mailbox.item.subject.getAsync is not a function'}

我尝试过的:

  1. 更改“邮箱”MinVersion =“1.1”
  2. 使用“Office.context.mailbox.item.subject.getAsync({asyncContext:“获取电子邮件主题”},函数(结果){...})” 错误仍然出现。
outlook office-js outlook-addin office-addins outlook-web-addins
2个回答
0
投票

尚不清楚加载项中何时何地调用

ReadEmailSubject
。但以下代码在我的计算机上的 Outlook for Desktop 中运行良好:

let item;

Office.initialize = function () {
    item = Office.context.mailbox.item;
    // Checks for the DOM to load using the jQuery ready method.
    $(document).ready(function () {
        // After the DOM is loaded, app-specific code can run.
        // Get the subject of the item being composed.
        getSubject();
    });
}

// Get the subject of the item that the user is composing.
function getSubject() {
    item.subject.getAsync(
        function (asyncResult) {
            if (asyncResult.status == Office.AsyncResultStatus.Failed){
                write(asyncResult.error.message);
            }
            else {
                // Successfully got the subject, display it.
                write ('The subject is: ' + asyncResult.value);
            }
        });
}

// Write to a div with id='message' on the page.
function write(message){
    document.getElementById('message').innerText += message; 
}

您可以找到一堆示例 Outlook 加载项来验证您的代码有什么问题,例如,请参阅 https://github.com/OfficeDev/Office-Add-in-samples/tree/main/Samples/outlook-verify-sensitivity-label .


0
投票

该接口仅在组合场景下可用。如果您尝试在读取场景中使用此 API,您将收到此错误。

© www.soinside.com 2019 - 2024. All rights reserved.