2015年8月3日 星期一

[開發Office Add-Ins]常用API - getSelectedDataAsync(6)

談完setSelectedDataAsync之後,我們來看看getSelectedDataAsync這個API,有填入當然就有取得,getSelectedDataAsync的功能非常簡單,就是取得用戶選取範圍的資料,我們看底下的程式碼:

function getTextData() {
    //調用API填入文字
    Office.context.document.getSelectedDataAsync(Office.CoercionType.Text,
    //call back
    function (asyncResult) {
        var error = asyncResult.error;
        //如果失敗
        if (asyncResult.status == "failed") {
            //顯示失敗訊息
            app.showNotification(error.name + ": " + error.message);
        }
        else {
            //顯示成功訊息
            app.showNotification('成功取得:' + asyncResult.value);
        }
    });
}

執行的結果如下:

image

你會發現,我們透過程式碼中的『asyncResult.value』取得選取區域的文字,由於我們傳入的取回type是Office.CoercionType.Text,因此取得的結果也以純文字方式呈現。

讀者可以試試看,如果把Office.CoercionType.Text改為Office.CoercionType.Html,你回發現傳回的asyncResult.value就變成HTML格式的內容了。

如果是Excel的內容呢?

我們看底下這段程式碼:

function getTableData() {
    //調用API填入文字
    Office.context.document.getSelectedDataAsync(Office.CoercionType.Matrix,
    //call back
    function (asyncResult) {
        var error = asyncResult.error;
        //如果失敗
        if (asyncResult.status == "failed") {
            //顯示失敗訊息
            app.showNotification(error.name + ": " + error.message);
        }
        else {
            //顯示成功訊息
            app.showNotification('成功取得:' + asyncResult.value[1][2]);
        }
    });
}

由於我們傳入參數『Office.CoercionType.Matrix』以Matrix格式取得選取區域的資訊,因此,當執行上面這段程式時,結果如下:

image

當選取區域是上圖畫面中的A1-C3,則抓取到的Matrix[1][2],其內容就是『3』(矩陣起始編號為0)。

透過簡單的API,我們不僅可以寫入,也可以讀取Office文件中的資料了。

沒有留言: