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,一经查实,立即删除!

相关文章

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

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

.NET Core 容器化调查

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

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

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

使用 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;这个很…

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

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

Kubernetes架构为什么是这样的?

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

开源 , KoobooJson一款高性能且轻量的JSON框架

在C#领域&#xff0c;有很多成熟的开源JSON框架&#xff0c;其中最著名且使用最多的是 Newtonsoft.Json ,然而因为版本迭代,其代码要兼容从net2.0到现在的最新的net框架,并且要支持.net平台下的其它语言,所以最新发布版本的Newtonsoft.Json其dll大小接近700k,另一方面,因为其复…

分布式系统的构建原则

什么是构建一个可维护和可扩展的系统的意义&#xff1f;在早期&#xff0c;一个系统的形态&#xff0c;只是满足用户和服务器资源之间的通道&#xff0c;唯一要扩展和维护的是系统后面的资源&#xff0c;保证资源的可用和够用&#xff0c;而系统本身的压力并不大。系统设计跟我…

可持久化4--可持久化并查集

可持久化并查集 可持久化并查集 按秩合并并查集 可持久化数组 首先并查集不能采用路径压缩&#xff0c;这是因为一次findR操作中&#xff0c;fa数组的很多位置&#xff08;u->ru&#xff09;会发生修改&#xff0c;由于每次修改都需要在可持久化数组上复制产生log个新结…

ASP.NET Core 2.2中的Endpoint路由

在ASP.NET Core 2.2中&#xff0c;新增了一种路由&#xff0c;叫做Endpoint&#xff08;终结点&#xff09;路由。本文将以往的路由系统称为传统路由。本文通过源码的方式介绍传统路由和Endpoint路由部分核心功能和实现方法&#xff0c;具体功能上的差异见官方文档。在升级到AS…

AtCoder2063 [AGC005E] Sugigma The Showdown(博弈论)

problem 洛谷链接 solution 考虑一条 (u,v)(u,v)(u,v) 的红边&#xff0c;在蓝树上 u,vu,vu,v 两点距离 ≥3\ge 3≥3。 如果先手到达 u,vu,vu,v 其中任何一点且下一步后手行动无法抓住先手&#xff0c;那么这个游戏就将进入死循环了。 通过画图&#xff0c;你会发现这个结…

基于ASP.NET Core的模块化设计: 虚拟文件系统

土牛亲自录制的本文介绍视频Abp中文网(https://cn.abp.io/)提供翻译字幕基于ASP.NET Core的模块化设计: 虚拟文件系统简介创建模块化的应用程序很困难. 构建模块化的用户界面更加困难. 需要单独开发模块的页面和组件,但是最后要把它们集成在一起像单个UI一样创建这样的模块化架…

[学习笔记] 乱世之神杀疯了 —— K-D tree

文章目录K-D tree建树合并插入删除查询(估价函数)旋转坐标系题目练习[SDOI2012]最近最远点对[Violet]天使玩偶/SJY摆棋子[CQOI2016]K远点对[国家集训队]JZPFARThe closest M points简单题巧克力王国[BOI2007]Mokia 摩基亚[CH弱省胡策R2]TATT[BZOJ3815]卡常数[NOI2019]弹跳A sim…

【春华秋实】.NET Core之只是多看了你一眼

技术学习是一件系统性的事情&#xff0c;如果拒绝学习&#xff0c;那么自己就会落后以至于被替代。.NET也是一样&#xff0c;当开源、跨平台成为主流的时候&#xff0c;如果再故步自封&#xff0c;等待.NET的就是死路一条&#xff0c;幸好.NET Core问世了&#xff0c;社区反响积…

[SDOI2010]粟粟的书架

[SDOI2010]粟粟的书架 题意&#xff1a; 一个R * C的矩阵&#xff0c;每个位置都有个数page[ij]&#xff0c;现在选定一个小矩阵范围(给左上角坐标&#xff0c;和右下角坐标)&#xff0c;问这个范围内的数总和是否大于h&#xff0c;如果大于h的话最少选几个数aij 对于50%的数…

基于Asp.Net Core的简单社区项目源代码开源

2019年3月27号 更新版本 本项目基于 ASP.NET CORE 3.0EF CORE 3.0开发使用vs2019 sqlserver 2017(数据库脚本最低支持sql server 2012/)使用步骤:1.下载相关开发工具2.运行数据库脚本目录下的相关脚本3.默认前端账号密码: 18812345678 1234564.默认后台账号密码: admin 123456开…

[学习笔记] 如果你愿意学那么你是可以看的懂的 —— 群论与 burnside 引理和 polya 定理

群与子群 <G,op><G,op><G,op> 是一个群需要满足以下条件&#xff1a; opopop 是一个满足结合律的二元运算&#xff0c;如 *&#xff0c;。GGG 是一个集合&#xff0c;存在单位元 eee。GGG 中所有元素都有逆元。即 GGG 对 opopop 运算封闭&#xff0c;封闭简单…

为什么从前那些.NET开发者都不写单元测试呢?

楔子四年前我虽然也写了很多年代码&#xff0c;由于公司虽然规模不小&#xff0c;却并非一家规范化的软件公司&#xff0c;因此在项目中严格意义上来说并没有架构设计、也不写单元测试&#xff0c;后来有幸加入了一家公司&#xff0c;这家公司虽然也是一家小公司&#xff0c;但…

使用 xUnit 编写 ASP.NET Core 单元测试

还记得 .NET Framework 的 ASP.NET WebForm 吗&#xff1f;那个年代如果要在 Web 层做单元测试简直就是灾难啊。.NET Core 吸取教训&#xff0c;在设计上考虑到了可测试性&#xff0c;就连 ASP.NET Core 这种 Web 或 API 应用要做单元测试也是很方便的。其中面向接口和依赖注入…