Script Lab 续:为 Officejs 开发配置 VSCode 环境

640?wx_fmt=png




垫场AA:深度:从 Office 365 新图标来看微软背后的设计新理念

--------------------------------------------------

前期01:尝试:Script Lab,快速 Office 365 开发工具

前期02:尝试:Script Lab,知识储备

前期03:实践:Script Lab,启动函数,Excel 基础操作(1)

前期04:实践:Script Lab,九九乘法表,Excel 基础操作(2)

前期04:Script Lab ,Office JavaScript API助手,Excel 基础操作(3)

前期06:Script Lab ,事件处理,Excel 基础操作(4)

前期07:Script Lab,单词“卡拉OK”,Word 基础操作

前期08:Script Lab,异步调用函数,PowerPoint 基础操作

--------------------------------------------------

垫场BB:为 Officejs 开发配置 VSCode 环境


准备


Script Lab 初级程教程己经靠一段落,前后共了8篇,作为 OfficeJS 开发入门己经缀缀有余。假设你使用Script Lab 创建了一个加载项的片段,那么你一定想把它变成一个一个独立的加载项。经过反复的偿试,还真找到一个最佳方法,可以轻松将代码片段转换为 OfficeJS 加载项。接着我们将进入第二阶段,向正式的 Web Add-ins 开发进军。

今天的内容将涉及大量的实操和安装过程,基本上是照着流程一步步来完成,半以一个最简单的 Script Lab 示例来操作,来最终完成一个 Web Add-ins 插件。

640?wx_fmt=png


工具


这次我们将使用 VSCode 而不是 VS 来开发OfficeJS(Office 365 Web Add-ins)。VSCode  是一个非常有用的轻量级的代码编辑工具(就是这两天,许豪同志还在筹备相关的教程或专场)。除此之外,还需要两个辅助的工具,第一个是 Node Package Manager(NPM),和 Git 工具。通过 NPM 还将安装 Yoeman ,通过 yo 与 Git 等工具的配合,我们也将拥有一个令人惊讶的强大开发环境,说实话回到字符界面,就像回到 90 年代还在玩 DOS 的过程,“握控一切”的感觉实在是太好了(用了 VS 就不俱备了)。

VSCode

下载并安装VSCode,网址如下:

https://code.visualstudio.com/

640?wx_fmt=png

nodejs

下载并安装Node以获取节点包管理器(NPM),网址如下:

https://nodejs.org/en/download/

640?wx_fmt=png

Git

下载并安装Git,网址如下:

https://git-scm.com/download

640?wx_fmt=png


Yeoman


【CNPM 】

三大基础工具装好后,接着就是开始着 Yeoman 的安装了。之前的安装过程还都有顺利,但是到了这个环节时,还是遇到了一些小小的麻烦。网速问题导致晚上无法更新完成。临近11:30了,还没有见到安装完成的希望。今天这篇公众号文章,看样子是没办法完整的发出了,自打1月22日开号以来,可能是第一次断更的情况了。求助万能的大牛群 dotnet跨平台(飞雪)交流群,果然得到了答案,方知在国内该使用 cnpm 才对,并且得到了正确的命令(感谢 玮仔Wayne 的指导)。

我们现在需要做的是安装 CNPM,按以下流程操作:

  1. 打开VSCode

  2. 按CTRL +`。这将打开控制台窗口。或者,您可以转到“视图”菜单,然后单击“集成终端”

  3. 切换到控制台中的终端,然后键入以下命令:

npm install -g cnpm --registry=https://registry.npm.taobao.org

【Yeoman】

yeoman 是 Google 的团队和外部贡献者团队合作开发的,他的目标是通过 Grunt(一个用于开发任务自动化的命令行工具)和 Bower(一个HTML、CSS、Javascript和图片等前端资源的包管理器)的包装为开发者创建一个易用的工作流。

cnpm install -g yo

安装 yeoman,其中 install 是命令代表了安装,-g 是参数代表了全局,yo 是项目简称。安装过程竟然只需要半分就完成了:

640?wx_fmt=png

【Office模板】

yoeman 其实是一个模板加载工具, 也叫生成器(generator),我们这里需在的是 Office 的模板,yoeman 还俱备查询功能,我们直接查询 Office 相关的模板。查到有两个跟Office相关的项目,我们得到了以下这条命令:

npm install -g generator-office

640?wx_fmt=png

默认会安装最新的Office模板@1.1.26,但是我推荐使用@1.1.5版本,俱备可以选择不建目录,最后还会有一个设置导航。

npm install -g generator-office@1.1.5

在知道原理后,我这里再提供一个更简单的安装方法,这里两个可以一并安装了:

npm install -g yo generator-office@1.1.5


创建


【代码片段】

在 GitHubGist 上(https://gist.github.com/)组合搜索“yaml excel colorful”,其中 yaml 表示 Script Lab 代码片段,excel 表示这类插件,colorful 也可以替换所你感兴趣其它内容,以下为搜集结果:

640?wx_fmt=png

复制整个 yaml 格式的代码模板:

640?wx_fmt=png

【导出清单代码】

将刚才复制的代码导入到 Script Lab 中,通过导入命令,贴入完整代码即可:

640?wx_fmt=png

导出清单(manifest)和代码(html)

640?wx_fmt=png

解压缩后得到,得到四个文件,新建一个目录,并将上面两个文件制复过去:

colorful-patterns.htmlcolorful-patterns--manifest.xmlcolorful-patterns--snippet-data.yamlREADME.md

【生成项目】

在 VSCODE 中,通过一句命令,来创建 Office Add-in 项目:

yo office

保留当前目录(Y),项目名称定一个(当前是:colorful-patterns),项目类型(Excel),创建项目代码,选择代码形式(TypeScript),项目生成后,选择项目引导(Y)。

640?wx_fmt=png

生成的文件目录结构如下:

640?wx_fmt=png


改造


【替换关键文件】

以下是教程的最关键点,你可以将之前导出的文件(manifest+html),将其复制并粘贴到现有项目中,就可以轻松将Script Lab 转转换功能完备的web add-ins 插件项目了。

colorful-patterns--manifest.xml 复制到根目录(对应 colorful-patterns-manifest.xml 可删)

colorful-patterns.html 复制到 Scr 目录下(对应 index.html,可删)

【修改清单文件】

修改清单文件:colorful-patterns--manifest.xml

清单文件后面的课程中将会专题介绍,这里只提一下几个关键的修改点,最重要的一点是替换启动页面,将默认的index.html改为Script Lab 生成的页面:

<bt:Url id="Contoso.Taskpane.Url" DefaultValue="https://localhost:3000/colorful-patterns.html" />

清单文件中所有文字的地方,进行汉化或修改:

<DisplayName DefaultValue="对照汉化!" /><Description DefaultValue="[对照汉化!]"/><bt:String id="Contoso.TaskpaneButton.Label" DefaultValue="对照汉化!" /><bt:String id="Contoso.Group1Label" DefaultValue="对照汉化!" /><bt:String id="Contoso.GetStarted.Title" DefaultValue="对照汉化!" /><bt:String id="Contoso.TaskpaneButton.Tooltip" DefaultValue="对照汉化!" /><bt:String id="Contoso.GetStarted.Description" DefaultValue="对照汉化!." />

【上传清单文件】

请按CTRL +`打开或返回集成终端。输入:

npm start

将在Chrome中打开您的项目。并可能会收到该站点不受信任的警告,单击“高级”并选择信任仍然/继续。或按照以下引导页进行认证主置,不在缀述:

640?wx_fmt=png

打开另一个选项卡,然后浏览到office365.com,登录帐户。在左上角的Office菜单上,单击Excel。在“插入”菜单上,单击“Office加载项”。在对话框的右上角,单击“上载我的加载项”。单击“浏览”,上传清单文件(colorful-patterns--manifest.xml)。的加载项现在将加载到“主页”选项卡上,切换到该选项卡,然后按“显示任务窗格”。

640?wx_fmt=png


总结


以上步骤将向你展示如何将 Script Lab 转为一个完整的 Web Add-ins 加载项目,Office Online中测试它。

  1. 获取GIST代码片段;

  2. 导入Script Lab 并成生清单文件;

  3. 用 yeoman + Office 模板,生成空项目;

  4. 替换 manifest、html 文件

  5. 修改 manifest 文件

  6. 上传 Office Online

640?wx_fmt=png


 学习群


作者:寒树Office

介绍:Office 365 开发学习群(每日更新)

群号:976054900

640?wx_fmt=png


 参加大会


欢迎您报名注册 Microsoft 365 DevDays (上海),欢迎加群咨询。

日期:4月13日-14日,

地址:上海市,徐汇区,古美路1528号A7一楼漕河泾开发区会议中心,

640?wx_fmt=png


本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/316547.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

P3567 [POI2014]KUR-Couriers

P3567 [POI2014]KUR-Couriers 题意&#xff1a; 给一个长度为 n 的正整数序列 a。共有 m 组询问&#xff0c;每次询问一个区间 [l,r] &#xff0c;是否存在一个数在 [l,r]中出现的次数严格大于一半。如果存在&#xff0c;输出这个数&#xff0c;否则输出 0。 题解&#xff1…

[WC 2022 Day3 zmy] Od deski do deski(dp)

设 fi:1∼if_{i}:1\sim ifi​:1∼i 能否分成若干个首尾相同的区间 则有 fiORj<i(fj−1∧ajai)f_{i}\text{OR}_{j<i}(f_{j-1}\wedge a_ja_i)fi​ORj<i​(fj−1​∧aj​ai​)。 这是最原始的暴力 dpdpdp&#xff0c;时间 O(n2m)O(n^2m)O(n2m)。 事实上&#xff0c;这…

编程方式重启 ASP.NET Core 网站

点击上方蓝字关注“汪宇杰博客”常言道&#xff0c;多喝热水&#xff0c;重启试试。有时候当应用工作不正常&#xff0c;重启也许能解决问题。但是程序员通常接触不到服务器系统权限。而运维人员和公司流程经常人为制造麻烦阻止我们去重启应用。老实的程序员不善言辞交际&#…

可持久化3--可持久化01Trie

01Trie 可持久化 01Trie 的方式和可持久化值域线段树的方式是相似的&#xff0c;只是以 01字典树 的方式来维护值域。一般用来解决异或相关的能够按位贪心的题目。 其实就是将可持久化线段树中的操作嫁接到01Trie中&#xff0c;这样就是解决任意一个区间内的问题。 例题&…

AGC044E Pandom Pawn(期望+凸包)

最开始我们先旋转一下这张桌子&#xff0c;使得 A1An1max⁡{Ai}A_1A_{n1}\max\{A_i\}A1​An1​max{Ai​}。 这是非常有效的&#xff0c;因为我们把环就变成链&#xff0c;只要到达了链的任意一端 1/n11/n11/n1 就肯定会结束游戏。 定义 Ei:E_i:Ei​: 从 iii 开始游戏&#xf…

.NET Core 容器化调查

前几天在微信朋友圈做了一个简单的调查&#xff0c;参与人数有500人&#xff0c;调查结果如下&#xff1a;使用K8S的比例非常类似于2017年初我在公众号里针对.NET Core的使用情况的比例。.NET Core是针对云原生应用开发而重新设计的一个平台&#xff0c;.NET Core借鉴了.NET Fr…

P4735 最大异或和

P4735 最大异或和 题意&#xff1a; 一个非负序列a&#xff0c;初始长度为n&#xff0c;有两种操作&#xff1a; A x&#xff0c;在序列中添加x&#xff0c;n加一Q l r x,询问操作&#xff0c;询问一个位置p&#xff0c;p满足l<p<r,使得p到位置n的的异或和与x的异或值…

[学习笔记] 单位根反演

单位根反演 [k∣n]1k∑i0k−1ωkin[k\mid n]\frac 1k\sum_{i0}^{k-1}\omega_k^{in}[k∣n]k1​∑i0k−1​ωkin​ kkk 次单位根是 kkk 次幂为 111 的复数解 wkw_kwk​。利用单位圆和单位根的关系很容易证明。 k∣nk\mid nk∣n 显然 ωkin\omega_k^{in}ωkin​&#xff0c;相当于…

NET Core微服务之路:再谈分布式系统中一致性问题分析

前言一致性&#xff1a;很多时候表现在IT系统中&#xff0c;通常在分布式系统中&#xff0c;必须&#xff08;或最终&#xff09;为多个节点的数据保持一致。世间万物&#xff0c;也有存在相同的特征或相似&#xff0c;比如儿时的双胞胎&#xff0c;一批工厂流水线的产品&#…

P4592 [TJOI2018]异或

P4592 [TJOI2018]异或 题意&#xff1a; 现在有一颗以 1 为根节点的由 n 个节点组成的树&#xff0c;节点从 1 至 n 编号。树上每个节点上都有一个权值 vi。现在有 q 次操作&#xff0c;操作如下&#xff1a; 1 x z&#xff1a;查询节点 x 的子树中的节点权值与 z 异或结果的…

[HAOI2018] 染色(二项式反演+NTT)

洛谷链接 显然颜色数量不会超过 lim⁡min⁡(m,ns)\lim\min(m,\frac ns)limmin(m,sn​) fi:f_i:fi​: 至少有 iii 种颜色恰好出现了 sss 次的方案数。 则 fi(mi)⋅n!(s!)i(n−is)!⋅(m−i)n−isf_i\binom mi\frac{n!}{(s!)^i(n-is)!}(m-i)^{n-is}fi​(im​)⋅(s!)i(n−is)!n!​…

使用 Nexus3镜像搭设私有仓库(Bower 、Docker、Maven、npm、NuGet、Yum、PyPI)

Docker - 使用 Nexus3 搭设私有 NuGet 仓库Nexus 默认帐号Repositories上传组件包(Package)Repositories 说明准备 Package上传 Package使用 Package拉取 Nexus 镜像运行 NexusNuGetNexus 私有仓库前言说明安装Nexus NuGet 仓库简单使用总结前言NuGetNuget 是免费、开源的包管理…

P3293 [SCOI2016]美味

P3293 [SCOI2016]美味 题意&#xff1a; 有n个数组a&#xff0c;现在有m个询问&#xff0c;每次给出一个b和x&#xff0c;问b xor (a[i] x)的最大值是多少&#xff1f; 题解&#xff1a; 不难看出01Trie的题目 我们设ansa[i]x,我们想要b xor ans的最大值&#xff0c;这个很…

[HNOIAHOI2018] 转盘(线段树维护单调栈)

problem 洛谷链接 solution 结论&#xff1a;最优方案中一定有一种是全程不停的。 断环成链&#xff0c;接一个 [1,n][1,n][1,n] 在后面形成 2n2n2n 的序列&#xff0c;同时将时间戳逆过来。 转化成&#xff1a;在 ttt 时刻从某个位置 i∈[n,2n)i\in[n,2n)i∈[n,2n) 开始往…

P2446 [SDOI2010]大陆争霸

P2446 [SDOI2010]大陆争霸 题意&#xff1a; n个点&#xff0c;m个边&#xff0c;wi为每个边的边权&#xff0c;对于每个点i&#xff0c;其被l个点保护着&#xff0c;也就是如果保护其的点没有被破坏&#xff0c;点i无法被破坏(也无法经过其前往其他点)。现在从1出兵(无限数量…

EF Core 小坑:DbContextPool 会引起数据库连接池连接耗尽

DbContextPool 是 ASP.NET Core 2.1 引入的新特性&#xff0c;可以节省创建 DbContext 实例的开销&#xff0c;但没有想到其中藏着一个小坑。最近有一个 ASP.NET Core 项目持续运行一段时间后日志中就会出现数据库连接池达到最大连接数限制的错误&#xff1a;System.InvalidOpe…

AtCoder4505 [AGC029F] Construction of a tree(二分图+网络流+dfs+构造)

problem 洛谷链接 solution 考虑 Ω{E1,...,En−1}\Omega\{E_1,...,E_{n-1}\}Ω{E1​,...,En−1​} 的一个子集 SSS&#xff0c;记 f(S){u∣u∈Ei∈S}f(S)\{u\mid u\in E_i\in S\}f(S){u∣u∈Ei​∈S}。 显然当 S≠∅∧∣f(S)∣≤∣S∣S\ne\empty\wedge\big|f(S)\big|\le |…

P2447 [SDOI2010]外星千足虫

P2447 [SDOI2010]外星千足虫 题意&#xff1a; 有n个未知数 给你一个m行n1列的式子&#xff0c;对于每行&#xff0c;1到n列为这个n个未知数的系数&#xff0c;第n1列为该行式子的和mod2&#xff0c;问n个未知数是否有唯一解&#xff0c;并输出&#xff0c;并输出最少需要前k…

Kubernetes架构为什么是这样的?

小编序&#xff1a;在上周发布的《从“鸿沟理论”看云原生&#xff0c;哪些技术能够跨越鸿沟&#xff1f;》一文中&#xff0c;灵雀云CTO陈恺表示&#xff1a;Kubernetes在云计算领域已经成为既定标准&#xff0c;进入主流市场&#xff0c;最新版本主要关注在稳定性、可扩展性方…

AtCoder4380 [AGC027F] Grafting(拓扑排序)

problem 洛谷链接 solution 首先特判掉两棵树一开始就相同的情况。 那么接下来就是一定要操作才能相同的情况了。 群龙无首不行&#xff0c;我们先定根。不妨枚举第一步的叶子操作&#xff0c;即枚举叶子以及其接的点。 然后对于 A,BA,BA,B 都以这个叶子为根&#xff0c;…