Office-JS: загрузка пользовательских свойств Excel при начальной загрузке - PullRequest
0 голосов
/ 05 сентября 2018

У меня проблемы с загрузкой пользовательских свойств из Excel при начальной загрузке с использованием Office js. Мы используем реагировать с Office JS. Нам нужно загрузить пользовательские свойства из Excel, когда Excel открывается в первый раз (Office.AutoShowTaskpaneWithDocument имеет значение true).

Вот код в index.js,

window.Office.initialize = (reason) => {
        ReactDOM.render(<Provider store={store}><App /></Provider>, document.getElementById('root'));
};

In App.js

window.Excel.run(async (context) => {             
        var docProps;
            try {                 
                var contextProps = await this.loadCustomProperties(context);   
                docProps = await this.getDocumentProperties(context); 
            }
            catch(error) {
                console.error("Error getting document properties");
            }
        });

метод loadCustomProperties:

async loadCustomProperties (context) { 
    console.log('context-getProperties');
    try {
        context.workbook.load('properties');
        await context.sync(); 
    }
    catch(error) {
        console.log('error loading properties of workbook');
    }

    context.workbook.properties.load('custom');
    await context.sync();

    try {
        var customProps = context.workbook.properties.custom;
        customProps.load('items');
        await context.sync();
    }
    catch(error) {
        console.log('error loading custom properties items');
    }        
    return context.sync().then(function(){
        console.log('context.workbook.properties.custom loaded successfully')
    }); 
}

Метод getDocumentProperties:

var DOCUMENT_SINGLEPROPS = ['DOCUMENT_PROP1', 'DOCUMENT_PROP2']
async getDocumentProperties (context) {
    let customProps = new documentProperty();
    const customDocProps = context.workbook.properties.custom;
    for(var i = 0; i < DOCUMENT_SINGLEPROPS.length; i++) {
        const custProp = DOCUMENT_SINGLEPROPS[i];
        let customProperty = customDocProps.getItemOrNullObject(custProp);
        customProperty.load("key, value");
        await context.sync();
        if (!customProperty.isNullObject) {
            customProps[custProp] = customProperty.value;
        }
        else {
            console.log("UNABLE TO FIND PROPERTY - " + custProp);
        }
    }
    console.log('------- custom document properties -------');
    console.log(customProps);
    return customProps;
 }

Приложение всегда выдает ошибку при начальной загрузке. Приведенный выше код работает нормально, когда мы пытаемся явно перезагрузить из надстройки. Похоже, что свойства документа не загружаются к моменту получения кода и это тоже в первый раз. Пожалуйста, дайте мне знать, если это так. Есть ли способ подождать полной загрузки Office js?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...