【问题标题】:Using sharepoint list REST API with Officescript in Excel在 Excel 中将共享点列表 REST API 与 Officescript 一起使用
【发布时间】:2022-10-20 01:25:20
【问题描述】:

我需要连接到 web excel 中的共享点列表以进行读写,本质上使用 excel 就像我可以构建更智能计算的表单一样(是的,我知道 powerapps/automate 是一个更好的解决方案,但是公司对此有一些限制正面)。到目前为止,我的脚本如下所示:

 let bob = await getListData();
 let mySheet = workbook.getActiveWorksheet();
 let myCell = mySheet.getCell(1,1)
 myCell.setValue(bob)
 
}

async function getListData(){
 let dataj='test';
 let headers:{};
 headers ={
   "method":"GET",
   "credentials": "same-origin", 
   "headers": {
     "accept": "application/json;odata=verbose",
     "accept-language": "en-US,en;q=0.9",
     "content-type": "application/json;odata=verbose"}
 }
 await fetch("https://mySite.sharepoint.com/sites/myGroup/_api/web/lists/GetByTitle('myList')/items", headers)
 .then((data) => {dataj=data.statusText; console.log(dataj)});
 return dataj
}

我已经在浏览器控制台中测试了第二个功能,我得到了预期的响应,但是在 officescript 中我得到“禁止”,而如果我将凭据更改为“包含”,我得到“获取失败”。有人有想法吗?

【问题讨论】:

  • 您是否尝试过将 PowerAutomate 与 SharePoint 连接器一起使用?你可能会更轻松。
  • 遗憾的是,我的组织不允许中央团队以外的任何人共享 PowerAutomate,因此虽然这对我来说更容易,但其他人无法使用该流程。
  • 您是否考虑过使用 Logic Apps 而不是 Power Automate?
  • 不,但是 azure 比 powerapps 锁定得更紧...

标签: excel rest sharepoint office-scripts


【解决方案1】:

关于获取失败的可能原因的一些想法:

  • CORS(https://en.wikipedia.org/wiki/Cross-origin_resource_sharing),这可能会阻止您从运行 Office 脚本的源/域 (https://*.officescripts.microsoftusercontent.com) 向其他域(在您的情况下为 https://mySite.sharepoint.com)发出 Web 请求. Here 是一些潜在的解决方法。基本上,如果您无法控制 API 服务提供商(在您的情况下是 SharePoint)来更改 API 以在其服务器端支持 CORS,则您需要找到一种方法来“桥接”您的请求通过某种中间层或代理服务。但这也可能对您来说是一个挑战,因为您组织中的 Azure 限制可能会阻止您构建 Web 服务?或者您认为您可以使用其他网络托管服务提供商构建一些东西吗?

  • 认证. SharePoint API 是一种受保护的 API,需要您进行经过身份验证的调用。在直接从 Excel Online 网页的浏览器控制台测试 API 调用时,您不需要执行此操作,因为我猜 API 调用可以继承经过身份验证的 Excel Online 会话的某些上下文(例如,cookie?),因为它们在相同的起源。但是,如果您从不同的来源 (https://*.officescripts.microsoftusercontent.com) 甚至从代理服务(如果您是建造一个。这也可能非常具有挑战性,因为令牌获取通常需要在 AzureAD 中进行一些额外的预配置,而且您甚至可能无法从 Office 脚本内部进行 - 令牌获取流程要求您将 AAD 客户端密码放入脚本代码中或使用在 Office 脚本中绝对行不通的重定向/弹出方法。

不幸的是,我认为这总体上是目前仅使用 Office 脚本来解决的难题。如果您认为有支持从 Office 脚本内部进行经过身份验证的调用(尤其是对那些官方 Microsoft/Office API)的价值,请随时提交建议/想法:https://feedbackportal.microsoft.com/feedback/forum/c23f3b77-f01b-ec11-b6e7-0022481f8472

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-03-22
    • 2021-06-01
    • 1970-01-01
    • 1970-01-01
    • 2016-07-16
    相关资源
    最近更新 更多