【问题标题】:"TypeError: item.getAttachmentsAsync is not a function" Outlook add-in office-js with Vue“TypeError:item.getAttachmentsAsync 不是函数”带有 Vue 的 Outlook 插件 office-js
【发布时间】:2021-06-10 13:29:37
【问题描述】:

我一直在关注此链接中的教程:https://docs.microsoft.com/en-us/javascript/api/outlook/office.messageread?view=outlook-js-preview#getAttachmentContentAsync_attachmentId__options__callback_,以尝试从 Outlook 电子邮件中获取任务窗格中 Office 加载项的附件。我是从 Read 场景而不是 Compose 场景中执行此操作的,而 Compose 场景应该可以从需求集 1.8 中获得。

我已将清单中的要求集更新为 1.8

    <Requirements>
        <Sets>
            <Set Name="Mailbox" MinVersion="1.8"/>
        </Sets>
    </Requirements>

以及更新版本覆盖需求集

    <VersionOverrides xmlns="http://schemas.microsoft.com/office/mailappversionoverrides" xsi:type="VersionOverridesV1_0">
        <Requirements>
            <bt:Sets DefaultMinVersion="1.8">
                <bt:Set Name="Mailbox"/>
            </bt:Sets>
        </Requirements>

在我的 Vue 文件中,这是我的代码:

mounted()
{
    this.loading = true;
    var item = Office.context.mailbox.item;

    console.log(item);
    var options = {asyncContext: {currentItem: item}};
    item.getAttachmentsAsync(options, callback);

    function callback(result)
    {
        console.log("inside callback");
        console.log(result.value.length)
        if (result.value.length > 0)
        {
            for (let i = 0; i < result.value.length; i++)
            {
                result.asyncContext.currentItem.getAttachmentContentAsync(result.value[i].id, handleAttachmentsCallback);
                console.log("function callback");
                console.log(result.value[i].id);
            }
        }
    }

    function handleAttachmentsCallback(result)
    {
        console.log("item attachment handler");
        // Parse string to be a url, an .eml file, a base64-encoded string, or an .icalendar file.
        switch (result.value.format)
        {
            case Office.MailboxEnums.AttachmentContentFormat.Base64:
                // Handle file attachment.
                console.log("got base 64");
                console.log("result ----------" + result.value);
                _this.sendRequest(result.value)
                break;
            case Office.MailboxEnums.AttachmentContentFormat.Eml:
                // Handle email item attachment.
                break;
            case Office.MailboxEnums.AttachmentContentFormat.ICalendar:
                // Handle .icalender attachment.
                break;
            case Office.MailboxEnums.AttachmentContentFormat.Url:
                // Handle cloud attachment.
                break;
            default:
            // Handle attachment formats that are not supported.
        }
    }
}

当我运行它时,我得到以下错误:

vue.js:634 [Vue 警告]:v-on 处理程序中的错误:“TypeError: item.getAttachmentsAsync 不是函数”

vue.js:1897 TypeError: item.getAttachmentsAsync 不是函数 在 VueComponent.mounted (getAttachments.vue:265) 单击时 (getAttachments.vue?ccdf:99) 在 invokeWithErrorHandling (vue.js:1863) 在 HTMLButtonElement.invoker (vue.js:2188) 在 HTMLButtonElement.original._wrapper (vue.js:7547)

我已经尝试了所有这些都没有解决问题,我什至尝试手动获取附件数据但没有成功。因为它在控制台中显示了附件数据,但由于错误而没有进一步。

outlook-addin Office.AttachmentContent interface not working

How get attachments in outlook plugin?

谢谢你,任何建议表示赞赏。

【问题讨论】:

    标签: vue.js office-js outlook-addin office-addins outlook-web-addins


    【解决方案1】:

    Office.context.mailbox.item.getAttachmentsAsync 仅在撰写模式下可用。如果您在阅读场景下工作,您可以使用 Office.MessageRead 接口上的attachments property 来获取项目的附件。

    例如:

    Office.context.mailbox.item.attachments[0].id
    

    将是项目上第一个附件的附件 ID。

    【讨论】:

    • 我对 getAttachmentsAsync 感到困惑,在 Microsoft 文档中他们提到您可以在 READ 和 COMPOSE 中使用。 ¿如何获取每个附件的内容?
    • 我也面临同样的问题 - 有没有办法读取附件内容?
    • 可以通过Message Read中的getAttachmentContentAsync API获取附件内容:docs.microsoft.com/en-us/javascript/api/outlook/…
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-11-13
    • 1970-01-01
    • 2018-12-17
    • 2021-03-14
    • 1970-01-01
    相关资源
    最近更新 更多