哪些版本的Office 2016支持Office.context.reqirements.isSetSupported()?

时间:2016-08-25 10:11:36

标签: javascript office365api office-js

我们正在运行Office 2016 16.0.6741.2063(延期频道),分配Office 365 API工作正常(有关使用docx插入等的一些问题,但XML很好)

但是这段代码总是转到" blockUI和警告(如果我拿出(不)"!",那么它很好,所以在其余的代码中不是错误)。

' WordApi'任何形状或形式的失败(1.2,没有版本,1,0.1 - 我已经尝试过所有!) 根据规范2016应该支持这一点,但似乎延期渠道不是吗?

有关如何进行此操作的任何想法(或在JavaScript中查找办公室版本的任何其他提示)

部分团队使用的是版本15..n的Office,我正在尝试使用它来提醒他们升级到16..n以减轻支持负担!

WITH 
  MEMBER [Measures].[DateFilter] AS 
    Cdate([Date.H_Date].CurrentMember.MemberValue) 
  MEMBER [Measures].[Average] AS 
    [Measures].[Price] / [Measures].[Covers SUM] 
SELECT 
  {
    [Measures].[Average]
   ,[Measures].[Covers SUM]
   ,[Measures].[Price]
  }
  DIMENSION PROPERTIES 
    [MEMBER_UNIQUE_NAME]
   ,[MEMBER_CAPTION]
   ON COLUMNS
 ,NON EMPTY 
    Filter
    (
      NonEmpty
      (
        CrossJoin
        (
          [Date].[H_Date].[Month].ALLMEMBERS
         ,[Waiter].[WaiterName].[WaiterName].ALLMEMBERS
        )
       ,{
          [Measures].[Average]
         ,[Measures].[Covers SUM]
         ,[Measures].[Price]
        }
      )
     ,
          Dateadd
          ("m"
           ,-1
           ,Dateadd
            ("m"
             ,Datediff
              ("m"
               ,Cdate(36526)
               ,Now()
              )
             ,Cdate(36526)
            )
          )
        <= 
          [Measures].[DateFilter]
      AND 
          [Measures].[DateFilter]
        < 
          Dateadd
          ("m"
           ,0
           ,Dateadd
            ("m"
             ,Datediff
              ("m"
               ,Cdate(36526)
               ,Now()
              )
             ,Cdate(36526)
            )
          )
    )
  DIMENSION PROPERTIES 
    [MEMBER_UNIQUE_NAME]
   ,[MEMBER_CAPTION]
   ON ROWS
FROM [YouCube];

2 个答案:

答案 0 :(得分:2)

支持加载项的客户端的所有版本都支持此功能(即2013年,2016年,Mac,在线等等)。您必须同意它具有相当的讽刺性(并且能够捕获22)要求您知道您所在的客户端,以便查询将[有效]告诉您您所在客户端的API。

如果您没有看到这项工作,请检查您正在使用的Office.js版本。 API的添加方式可以追溯性地使其适用于Office 2013(没有此版本),但您必须使用最新(或接近)版本的Office.js。引用CDN将是保证这一点的最佳方式。

<script src="https://appsforoffice.microsoft.com/lib/1/hosted/Office.js" type="text/javascript"></script>

答案 1 :(得分:1)

我找到了一种从Word API中提取“功能”列表的方法。

使用div“id = resultpanel”输出,这段代码为我提供了功能集:

        Office.initialize = function (reason) {
            $(document).ready(function () {
                    var sets = Office.context.requirements._setMap._sets;       
                    for (var set in sets){
                        showNotification("Set type: " + set + " value " +sets[set]  );
                    }

                //if (! Office.context.requirements.isSetSupported('WordApi', 1.1)) {
                //if ( Office.context.requirements.isSetSupported('WordApi', 1.2)){
                    // alert something
                //}
                //else {
                    // If setSelectedDataAsync method is supported by the host application
                    // the UI buttons are hooked up to call the method else the buttons are removed     
                    if (Office.context.document.setSelectedDataAsync) {             
                        ExecuteOrDelayUntilScriptLoaded(addDocsAsYouGo, "sp.js");   
                        ExecuteOrDelayUntilScriptLoaded(addDocsAsYouGoDefr, "sp.js");
                        if(!siteInitialised){
                            initialiseSharePointConnection();
                        }
                        if (!pathInitiliased){
                            clientContext.executeQueryAsync(function () {           
                                filePath = oWebsite.get_serverRelativeUrl() + "/Shared Documents/DOCXApproved/";
                                pathInitiliased = true;             
                            });
                        }
                    }       
                //}
            });
        };

        function showNotification(content) {
            var resultpanel = document.getElementById("resultpanel");
            var currentText = resultpanel.innerHTML;
            currentText = currentText + "<br/>" + content;
            resultpanel.innerHTML = currentText;
        }

Office 365在线上的Word输出提供:

        Set type: compressedfile value 1.1
        Set type: documentevents value 1.1
        Set type: file value 1.1
        Set type: imagecoercion value 1.1
        Set type: matrixcoercion value 1.1
        Set type: ooxmlcoercion value 1.1
        Set type: pdffile value 1.1
        Set type: selection value 1.1
        Set type: settings value 1.1
        Set type: tablecoercion value 1.1
        Set type: textcoercion value 1.1
        Set type: textfile value 1.1

从Word桌面客户端版本16.0.6741.2063我得到:

        Set type: compressedfile value 1.1
        Set type: customxmlparts value 1.2
        Set type: documentevents value 1.1
        Set type: file value 1.1
        Set type: htmlcoercion value 1.1
        Set type: imagecoercion value 1.1
        Set type: matrixbindings value 1.1
        Set type: matrixcoercion value 1.1
        Set type: ooxmlcoercion value 1.1
        Set type: pdffile value 1.1
        Set type: selection value 1.1
        Set type: settings value 1.1
        Set type: tablebindings value 1.1
        Set type: tablecoercion value 1.1
        Set type: textbindings value 1.1
        Set type: textcoercion value 1.1
        Set type: textfile value 1.1
        Set type: wordapi value 1.3
        Set type: wordapinewdoc value 1.2

使用此输出,我可以决定在加载项中启用哪些功能!

然后使用它我还可以确定它是Word在线还是桌面客户端

showNotification("url is: " + Office.context.document.url);

输出:

url is: https://<corp portal name>-my.sharepoint.com/personal/<my name>/Documents/Document15.docx

注意: 公司门户名称 我的名字 将根据运行的人员和位置而变化。文档 nn .docx同样会改变(这是为业务添加到OneDrive的自动命名文件)。

在桌面客户端上,这是空白的。