0

我想为 Outlook 开发一个现代 Office 加载项。此加载项应支持与 SP2016、SP2019 和 SPO 的连接。对于这些 SharePoint 连接,我想使用 SP-PNP-JS,但我无法获得 SharePoint 上下文。

我正在使用 yeoman-generator 创建一个新的 Outlook 加载项

yo office --projectType react --name "Outlook AddIn" --host outlook --ts true.

侧载到 Outlook 客户端和 OWA 工作正常。在这种情况下,我将 sp-pnp-js 安装到这个项目中

npm install @pnp/logging @pnp/common @pnp/odata @pnp/sp @pnp/nodejs --save

并尝试将 SharePoint-context 与https://pnp.github.io/pnpjs/getting-started/#establish-context中的每个示例连接起来。

我还尝试与 sp-addinhelpers https://pnp.github.io/pnpjs/sp-addinhelpers/建立连接。

几天后,我真的很沮丧。是否可以在 Office 加载项中使用 sp-pnp-js?有没有人在本地 Office-Addins 或替代 REST 和 JSOM 中使用 SP-PNP-JS 的解决方案?

我正在使用 SPO 进行开发。此加载项应集成到 Outlook 2019 和 SharePoint 2016/2019 本地。

感谢帮助!!!

更新 - 2021/04/11 我创建了一个没有 yeoman-generator 的新纯 ReactJS 项目。在这个项目中,我通过 npm install 添加了 sp-pnp-js,并从官方 Office.js CDN 链接了 office.js。

任务窗格.html

<!doctype html>
<html lang="en" data-framework="javascript">

<head>
    <meta http-equiv="X-UA-Compatible" content="IE=11" />
    <link rel="icon" href="/favicon.ico" />
    <script src="https://appsforoffice.microsoft.com/lib/1/hosted/office.js"
        type="text/javascript"></script>
    <meta name="viewport" content="width=device-width,initial-scale=1" />
    <meta name="theme-color" content="#000000" />
    <meta name="description" content="Web site created using create-react-app" />
    <link rel="apple-touch-icon" href="logo192.png" />
    <title>Outlook Add-In</title>
    <link href="<sharepoint-tenant>/SiteAssets/office-addin/static/css/2.486e1214.chunk.css"
        rel="stylesheet">
    <link href="<sharepoint-tenant>/SiteAssets/office-addin/static/css/main.d5778436.chunk.css"
        rel="stylesheet">
</head>

编译后的文件将上传到 SharePoint。现在我得到了正确的上下文,并且我的 SharePoint 操作运行正确。我已经初始化 Office:

index.js

import "office-ui-fabric-react/dist/css/fabric.min.css";
import 'react-app-polyfill/ie11';
import 'react-app-polyfill/stable';
import React from 'react';
import ReactDOM from 'react-dom';
import './index.css';
import Taskpane from './Taskpane';
import { initializeIcons } from "office-ui-fabric-react/lib/Icons";
/* global Component, document, Office, module, require, Taskpane */

console.log("initializing...")
Office.initialize = function(reason) {console.log(reason)};
Office.onReady(function() {
  console.log("Office ready!");
  initializeIcons();
  ReactDOM.render(<Taskpane />, document.getElementById("root"));
});

仅在 IE11 中,我'SCRIPT5009: 'Office' is undefined在该行收到错误Office.initialize。Outlook 桌面客户端中的任务窗格为空白,因为客户端正在调用 iexplorer.exe。我花了很多天来解决这个问题。我将非常感谢提示。

4

0 回答 0