歡迎光臨
每天分享高質量文章

大結局:Script Lab,異步呼叫函式,PowerPoint 基礎操作

 

前期01:深度:從 Office 365 新圖標來看微軟背後的設計新理念

前期02:嘗試:Script Lab,快速 Office 365 開發工具

前期03:嘗試:Script Lab,知識儲備

前期04:實踐:Script Lab,啟動函式,Excel 基礎操作(1)

前期05:實踐:Script Lab,九九乘法表,Excel 基礎操作(2)

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

前期07:Script Lab ,事件處理,Excel 基礎操作(4)

本期08:Script Lab,單詞“卡拉OK”,Word 基礎操作

本期09:Script Lab,,PowerPoint基礎操作

 

準備工作

 

Script Lab 的級初入門教程,到今天就要告一段落了。總結部分,我們來實踐一個 PPT 的例子吧。相比 Word 和 Excel 來說,PPT 的 API 的完成度並不高,甚至連啟動函式也沒有實現(目前有 Excel.run、 Word.run、OneNote.run)。

在 PowerPoint 空間下,僅實現了一個方法,沒有像 Excel 或 Word 那樣,可以操作的較完整的 API 物件集。

var ppt = PowerPoint.createPresentation();

PPT 目前的主要操作,只能集中在一些 Offie 通用的功能上,依托於 Office 空間下的 context 物件來操作。本次舉一個較簡單的例子,在 PPT 上插入一個 SVG 的形狀,這也是 Script Lab 中自帶的一個例子(總共也只有 5個 API 案例)。

 

代碼解析

【完整代碼】

$("#insert").click(newImage);
function newImage() {  Office.context.document.setSelectedDataAsync(    getImageAsBase64String(),    {      coercionType: Office.CoercionType.XmlSvg,      imageLeft: 50,      imageTop: 50,      imageWidth: 400    },    function(asyncResult) {      if (asyncResult.status === Office.AsyncResultStatus.Failed) {        console.error(asyncResult.error.message);      }    }  );}
function getImageAsBase64String() {  // A production add-in code could get an image from an  // online source and pass it to a library function that  // converts to base 64.  var svg ='    ...

‘; return svg;

 

【代碼解析】

取得當前頁,並插入 SVG 圖標(發未選中,則引出發錯)

Office.context.document.setSelectedDataAsync(…)

其實這種呼叫樣式,我們在前期的代碼中並未出現過,所以藉此機會,討論下這裡的要點。Office API 應用程式中異步函式有通用簽名格式,Office API 應用程式中的所有異步函式都有相同的命名約定和相同的基本簽名。 每個異步函式的名稱都以”Async”結尾,以本次呼叫的函式為例:其實所有的步函式的簽名都遵循以下基本樣式:

functionNameAsync(requiredParameters,[, options], [callback]);

必需引數後面另有兩個引數: 一個包含可選引數的物件和一個回呼函式,兩者始終都是可選的。異步函式中的可選引數 異步函式簽名中的可選 JavaScript 物件是用分號分隔的鍵/值對的集合,其中的鍵是引數名稱,值是您想對該引數使用的資料。 鍵/值對的順序無關緊要,只要引數名稱正確即可。

以本次呼叫為例,setSelectedDataAsync 方法具有 Office 應用程式中所有異步函式通用的相同基本簽名:

Office.context.document.setSelectedDataAsync(  data [, options]callback);

Document.set­SelectedDataAsync 也有一個選項物件,其中包含可選引數,但其選項物件的引數與該 API 中其他異步函式的引數不同,因為此函式的用途是設置資料。 因此,Document.setSelectedDataAsync 的可選引數與設置資料有關:

  • coercionType: 一個指定所插入資料格式(文本、HTML、OOXML、表或矩陣)的 CoercionType 列舉

  • asyncContext: 一個用戶定義的物件,在作為回呼函式唯一引數傳遞給該函式的 AsyncResult 物件中無變化傳回。

AsyncResult 物件在異步函式中的角色 JavaScript API for Office 中異步函式的通用簽名中的第三個引數是可選的回呼引數。 當運行時呼叫回呼函式時,它會將 Async­Result 物件作為回呼函式唯一的引數傳入。 AsyncResult 物件包含有關異步操作的信息,如: 操作是否成功;發生了什麼錯誤(如果有);以及異步函式的傳回值(如果有)。在傳回某種資料或物件的所有異步函式中,AsyncResult 都是可以獲得傳回值的唯一方式。 可以使用 AsyncResult.value 屬性實現這一點。

if (asyncResult.status === Office.AsyncResultStatus.Failed) {        console.error(asyncResult.error.message);

【效果圖】

 

    赞(0)

    分享創造快樂