未捕获的引用错误:Excel未定义。

3
我正在使用 "JavaScript API for Office 插件" 在我的 HTML 程序中创建 Excel 文件。然而,当我加载页面时,会返回一个错误消息。
<head>
   <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.2.1/jquery.min.js"></script>
   <script src="https://appsforoffice.microsoft.com/lib/1/hosted/Office.js" type="text/javascript"></script>

  <script>
    Excel.run(function (context) {     
      console.log('Your code goes here.');
    }).catch(function (error) {
      console.log('error: ' + error);
   });
  </script>
<head>

这会返回一个错误信息“未捕获的引用错误:Excel未定义”。

1
我不太确定如何使用这个API。但是,我在这些文档中看到你需要等待“Office”初始化。有一个Office.onReady函数,在这个函数的回调中,我认为你可以执行相关任务。 这里: https://github.com/OfficeDev/office-js-docs-pr/blob/master/docs/develop/understanding-the-javascript-api-for-office.md#initializing-your-add-in - Sivcan Singh
此外,我可以在控制台中看到警告“警告:Office.js已在Office客户端外加载”,我认为您需要在Office客户端内部加载它。您需要更深入地了解您试图通过此操作实现什么目的。 - Sivcan Singh
1个回答

0
Sivcan的评论是正确的。当加载插件时,API功能不会立即可用(通常甚至没有在JS变量中定义),需要等待调用Office.onReady(或其旧版本Office.initialize)。
在您的情况下,应该可以这样工作:
<head>
   <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.2.1/jquery.min.js></script>
   <script src="https://appsforoffice.microsoft.com/lib/1/hosted/Office.js" type="text/javascript"></script>

   <script>
       Office.onReady(() => {
           Excel.run(function (context) {     
               console.log('Your code goes here.');
           }).catch(function (error) {
               console.log('error: ' + error);
           });
       });
   </script>
</head>
<body>
</body>

仍然出现相同的错误。请在jsbin中检查。 - user9657450
1
正确。这段代码只能在Excel加载项中工作,而不能在普通浏览器中运行。 - Michael Zlatkovsky - Microsoft
如果你想要一个类似JSBin的工具,但是用于Office插件,请尝试 https://aka.ms/script-lab - Michael Zlatkovsky - Microsoft

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接