Надстройка Word работает в MSWord 2016 и в изолированной программной среде Visual Studio, но не в Word для Office 365 - PullRequest
0 голосов
/ 25 июня 2019

Я пытаюсь отладить надстройку javascript для слова, написанную другим разработчиком, который работал в Word 2016. Но когда наша организация приняла O365, она перестала работать там.Возможно, что наша организация (Penn State) блокирует некоторые функции, а также возможно, что проблема связана с нашей единой регистрацией (Cosign).Надстройка работает , когда я запускаю ее в новом автономном проекте надстройки Word Studio 2017 Word (очевидно, в той же версии MS-Word).

I 'мы попытались отладить код с помощью VS, и ошибка, по-видимому, происходит глубоко в функции Office.onReady ().В этот момент был создан экземпляр объекта Office, но не объект Word.Ошибка отображается как «Невозможно получить свойство run для неопределенной или нулевой ссылки» при первом вызове Word.run

. Вот файл manifest.xlm:

    <OfficeApp xmlns="http://schemas.microsoft.com/office/appforoffice/1.1"
               xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
               xsi:type="TaskPaneApp">
               <Id>e69eaa23-19f3-48fd-9f8e-694eb013e433</Id>
        <Version>1.0.0.0</Version>
        <ProviderName>Microsoft</ProviderName>
        <DefaultLocale>en-US</DefaultLocale>
        <DisplayName DefaultValue="PSU Indexing" />
        <Description DefaultValue="Manage and create document indexes." />
        <Hosts>
            <Host Name="Document"/>
        </Hosts>
        <DefaultSettings>
            <SourceLocation DefaultValue="C:\PSUIndexer\home.html" />
        </DefaultSettings>
        <Permissions>ReadWriteDocument</Permissions>
    </OfficeApp>

иВот начало файла main.js, который содержит большую часть кода JavaScript для надстройки:

    "use strict";

    // The initialize function is run each time the page is loaded.
    Office.onReady(function() {
        $(document).ready(function () {
            try {
                // Use this to check whether the API is supported in the Word client.
                if (Office.context.requirements.isSetSupported('WordApi', 1.1)) {
                    // alert supported version
                    $('#system_notes').html("<p>Word version check successful. System ready to use.</p>");

                    Init();

            ... // some more code here but it's already failed at this point
                }
                else {
                    // Just letting you know that this code will not work with your version of Word.
                    $('#system_notes').append('<p>This system requires Word 2016 or greater. Some parts may not function.</p>');
                }

            } catch(e) {
                OutputText(e.message);
            }
        });
    });

    function Init() {
        Word.run(function (context) {
        ... // init code goes here
        return context.sync();
        }).catch(handleError);
    }

Первоначальная ошибка возникает в word-win32-16.01.js (строка 24, столбец 346444).): "Невозможно получить свойство 'getItem' с неопределенной или нулевой ссылкой."Объект, на который ссылаются, является локальным хранилищем;Я думаю, это потому, что установка ссылается на html и javascript в локальной файловой системе - позже мы захотим разместить это где-нибудь на веб-сервере, но сейчас и в прошлом это был способ, которым он был установлен.Поскольку объект Word не создается, функция Word.run в Init () завершается ошибкой, и после этого никакой javascript работать не будет.

Заранее благодарим за любые идеи.

...