从 VBA 创建 SharePoint 文件夹(访问 2016)



>我有一个 Access 2016 应用程序,该应用程序当前在共享驱动器上创建一个与用户正在处理的数据库记录相关的文件夹。

我们正在在线迁移到 SP,我需要重新创建类似的东西

我可以使用 API 列出当前在目录中的文件和文件夹,但是当我尝试创建新文件夹时,我收到错误

"{"error":{"code":"-2130575251, Microsoft.SharePoint.SPException","message":{"lang":"en-US","value":"The security validation for this page is invalid and might be corrupted. Please use your web browser's Back button to try your operation again."}}}"

我唯一能看到我正在做的不同的事情是我没有在帖子中包含授权:"持有者"+ accessToken 标头。

我没有将其包含在"文件"列表的获取中,它正在使用来自IE的缓存凭据工作。

像这样获取文件和文件夹是有效的


'create XML HTTP object
Set objXMLHTTP = CreateObject("MSXML2.XMLHTTP")
With objXMLHTTP
'open connection to site
.Open "GET", url, False
'.send
.setRequestHeader "Content-Type", "application/json; charset=UTF-8"
.setRequestHeader "Accept", "application/json"
.send
Do Until .ReadyState = 4: DoEvents: Loop
sJSONString = .responseText
End With

Dim Json As Object
Set Json = JsonConverter.ParseJson(sJSONString)
Debug.Print JsonConverter.ConvertToJson(Json, Whitespace:=2)
Dim value As Dictionary
For Each value In Json("value")
Debug.Print "> " + value("Name")
Next value

但是尝试创建文件夹失败


strPostData = "{ '__metadata': { 'type': 'SP.Folder' }, 'ServerRelativeUrl': '/Shared Documents/Folder1'}"
'Set objXMLHTTP = New MSXML2.XMLHTTP
With objXMLHTTP
.Open "POST", url, False
.setRequestHeader "accept", "application/json;odata=verbose"
.setRequestHeader "Content-Type", "application/json;odata=verbose"
.send strPostData
strResponse = .responseText
End With

谁能建议我正在尝试的事情是否可行,如果是的话,我正在做的事情是错误的?

对不起,我几乎立即找到并回答了!

需要添加

.setRequestHeader "X-RequestDigest", digest
.setRequestHeader "Content-Length", Len(strPostData)

一切都开始工作了!

无论如何,谢谢,希望这对其他人有所帮助

最新更新