我想为 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。我花了很多天来解决这个问题。我将非常感谢提示。