Как установить поле пользователя в SharePoint Online с помощью автоматического HTTP-запроса Power на _vti_bin/client.svc/ProcessQuery?

#xml #sharepoint-online #csom #power-automate

#xml #sharepoint-online #csom #power-автоматизировать

Вопрос:

Я пытаюсь выяснить, как установить значение пользовательского поля в SharePoint с помощью Power Automate. Мне нужно использовать метод SystemUpdate, поэтому я вынужден использовать подход CSOM XML-запроса (_vti_bin/client.svc/ProcessQuery), но я не могу заставить его работать..

Используя C # и fiddler для генерации XML, чтобы посмотреть, как выглядит запрос, я получаю следующее:

 <Request AddExpandoFieldTypeSuffix="true" SchemaVersion="15.0.0.0" LibraryVersion="16.0.0.0" ApplicationName=".NET Library" xmlns="http://schemas.microsoft.com/sharepoint/clientquery/2009">
<Actions>
    <Method Name="SetFieldValue" Id="41" ObjectPathId="30" Version="82">
        <Parameters>
            <Parameter Type="String">CosUser</Parameter>
            <Parameter TypeId="{c956ab54-16bd-4c18-89d2-996f57282a6f}">
                <Property Name="Email" Type="Null" />
                <Property Name="LookupId" Type="Int32">304</Property>
                <Property Name="LookupValue" Type="Null" />
            </Parameter>
        </Parameters>
    </Method>
    <Method Name="SystemUpdate" Id="42" ObjectPathId="30" Version="82" />
    <Query Id="43" ObjectPathId="30">
        <Query SelectAllProperties="false">
            <Properties>
                <Property Name="FileSystemObjectType" ScalarProperty="true" />
                <Property Name="Id" ScalarProperty="true" />
                <Property Name="ServerRedirectedEmbedUri" ScalarProperty="true" />
                <Property Name="ServerRedirectedEmbedUrl" ScalarProperty="true" />
                <Property Name="ContentTypeId" ScalarProperty="true" />
                <Property Name="_ModerationComments" ScalarProperty="true" />
                <Property Name="FileLeafRef" ScalarProperty="true" />
                <Property Name="Modified_x0020_By" ScalarProperty="true" />
                <Property Name="Created_x0020_By" ScalarProperty="true" />
                <Property Name="File_x0020_Type" ScalarProperty="true" />
                <Property Name="HTML_x0020_File_x0020_Type" ScalarProperty="true" />
                <Property Name="_SourceUrl" ScalarProperty="true" />
                <Property Name="_SharedFileIndex" ScalarProperty="true" />
                <Property Name="ComplianceAssetId" ScalarProperty="true" />
                <Property Name="Title" ScalarProperty="true" />
                <Property Name="TemplateUrl" ScalarProperty="true" />
                <Property Name="xd_ProgID" ScalarProperty="true" />
                <Property Name="xd_Signature" ScalarProperty="true" />
                <Property Name="_ShortcutUrl" ScalarProperty="true" />
                <Property Name="_ShortcutSiteId" ScalarProperty="true" />
                <Property Name="_ShortcutWebId" ScalarProperty="true" />
                <Property Name="_ShortcutUniqueId" ScalarProperty="true" />
                <Property Name="_dlc_DocId" ScalarProperty="true" />
                <Property Name="_dlc_DocIdUrl" ScalarProperty="true" />
                <Property Name="_dlc_DocIdPersistId" ScalarProperty="true" />
                <Property Name="Godk_x00e4_ndVersion" ScalarProperty="true" />
                <Property Name="Godk_x00e4_nt" ScalarProperty="true" />
                <Property Name="_ModerationStatus" ScalarProperty="true" />
                <Property Name="MediaServiceMetadata" ScalarProperty="true" />
                <Property Name="MediaServiceFastMetadata" ScalarProperty="true" />
                <Property Name="CosUser" ScalarProperty="true" />
                <Property Name="ID" ScalarProperty="true" />
                <Property Name="Created" ScalarProperty="true" />
                <Property Name="Author" ScalarProperty="true" />
                <Property Name="Modified" ScalarProperty="true" />
                <Property Name="Editor" ScalarProperty="true" />
                <Property Name="_HasCopyDestinations" ScalarProperty="true" />
                <Property Name="_CopySource" ScalarProperty="true" />
                <Property Name="FileRef" ScalarProperty="true" />
                <Property Name="FileDirRef" ScalarProperty="true" />
                <Property Name="Last_x0020_Modified" ScalarProperty="true" />
                <Property Name="Created_x0020_Date" ScalarProperty="true" />
                <Property Name="File_x0020_Size" ScalarProperty="true" />
                <Property Name="FSObjType" ScalarProperty="true" />
                <Property Name="SortBehavior" ScalarProperty="true" />
                <Property Name="CheckedOutUserId" ScalarProperty="true" />
                <Property Name="IsCheckedoutToLocal" ScalarProperty="true" />
                <Property Name="CheckoutUser" ScalarProperty="true" />
                <Property Name="UniqueId" ScalarProperty="true" />
                <Property Name="SyncClientId" ScalarProperty="true" />
                <Property Name="ProgId" ScalarProperty="true" />
                <Property Name="ScopeId" ScalarProperty="true" />
                <Property Name="VirusStatus" ScalarProperty="true" />
                <Property Name="CheckedOutTitle" ScalarProperty="true" />
                <Property Name="_CheckinComment" ScalarProperty="true" />
                <Property Name="MetaInfo" ScalarProperty="true" />
                <Property Name="_Level" ScalarProperty="true" />
                <Property Name="_IsCurrentVersion" ScalarProperty="true" />
                <Property Name="ItemChildCount" ScalarProperty="true" />
                <Property Name="FolderChildCount" ScalarProperty="true" />
                <Property Name="Restricted" ScalarProperty="true" />
                <Property Name="OriginatorId" ScalarProperty="true" />
                <Property Name="NoExecute" ScalarProperty="true" />
                <Property Name="ContentVersion" ScalarProperty="true" />
                <Property Name="_ComplianceFlags" ScalarProperty="true" />
                <Property Name="_ComplianceTag" ScalarProperty="true" />
                <Property Name="_ComplianceTagWrittenTime" ScalarProperty="true" />
                <Property Name="_ComplianceTagUserId" ScalarProperty="true" />
                <Property Name="BSN" ScalarProperty="true" />
                <Property Name="_ListSchemaVersion" ScalarProperty="true" />
                <Property Name="_Dirty" ScalarProperty="true" />
                <Property Name="_Parsable" ScalarProperty="true" />
                <Property Name="_StubFile" ScalarProperty="true" />
                <Property Name="_HasEncryptedContent" ScalarProperty="true" />
                <Property Name="AccessPolicy" ScalarProperty="true" />
                <Property Name="_VirusStatus" ScalarProperty="true" />
                <Property Name="_VirusVendorID" ScalarProperty="true" />
                <Property Name="_VirusInfo" ScalarProperty="true" />
                <Property Name="_CommentFlags" ScalarProperty="true" />
                <Property Name="_CommentCount" ScalarProperty="true" />
                <Property Name="_LikeCount" ScalarProperty="true" />
                <Property Name="_RmsTemplateId" ScalarProperty="true" />
                <Property Name="_IpLabelId" ScalarProperty="true" />
                <Property Name="_DisplayName" ScalarProperty="true" />
                <Property Name="_IpLabelAssignmentMethod" ScalarProperty="true" />
                <Property Name="A2ODMountCount" ScalarProperty="true" />
                <Property Name="AppAuthor" ScalarProperty="true" />
                <Property Name="AppEditor" ScalarProperty="true" />
                <Property Name="SMTotalSize" ScalarProperty="true" />
                <Property Name="SMLastModifiedDate" ScalarProperty="true" />
                <Property Name="SMTotalFileStreamSize" ScalarProperty="true" />
                <Property Name="SMTotalFileCount" ScalarProperty="true" />
                <Property Name="owshiddenversion" ScalarProperty="true" />
                <Property Name="_UIVersion" ScalarProperty="true" />
                <Property Name="_UIVersionString" ScalarProperty="true" />
                <Property Name="InstanceID" ScalarProperty="true" />
                <Property Name="Order" ScalarProperty="true" />
                <Property Name="GUID" ScalarProperty="true" />
                <Property Name="WorkflowVersion" ScalarProperty="true" />
                <Property Name="WorkflowInstanceID" ScalarProperty="true" />
                <Property Name="ParentVersionString" ScalarProperty="true" />
                <Property Name="ParentLeafName" ScalarProperty="true" />
                <Property Name="DocConcurrencyNumber" ScalarProperty="true" />
                <Property Name="ParentUniqueId" ScalarProperty="true" />
                <Property Name="StreamHash" ScalarProperty="true" />
            </Properties>
        </Query>
    </Query>
</Actions>
<ObjectPaths>
    <Identity Id="30" Name="70a7809f-e0f1-2000-3b39-606f7342ba2c|740c6a0b-85e2-48a0-a494-e0f1759d4aa7:site:c8820382-1e83-42c7-81ba-911b2588b810:web:91a8bac3-5a81-47bb-abea-5797f7a4f9f8:list:ea4b0053-df63-468f-8e89-45891e1b68a2:item:1,1" />
</ObjectPaths>
  

Но если я использую этот XML в Power Automate, он выдает мне следующее:

 [
  {
    "SchemaVersion": "15.0.0.0",
    "LibraryVersion": "16.0.20523.12005",
    "ErrorInfo": {
      "ErrorMessage": "Unknown error",
      "ErrorValue": null,
      "TraceCorrelationId": "6205819f-b00a-2000-4281-194024f5ab40",
      "ErrorCode": -1,
      "ErrorTypeName": "Microsoft.SharePoint.Client.UnknownError"
    },
    "TraceCorrelationId": "6205819f-b00a-2000-4281-194024f5ab40"
  }
]
  

Я использую эти заголовки:

 Content-Type: text/xml
X-Requested-With: XMLHTTPRequest
Accept: */*
  

Я везде искал решение, но не нашел ни одного. Кто-нибудь знает, как установить поле пользователя с помощью CSOM XML?

Комментарии:

1. Здесь та же проблема. Какое-либо разрешение после?

Ответ №1:

Я сам столкнулся с аналогичной проблемой, и мое решение состояло в том, чтобы использовать вкладку F12 developer tools Network SPO modern experience «Редактировать в виде таблицы» в моем списке целей, чтобы посмотреть, как он использовался _vti_bin/client.svc/ProcessQuery для обновления поля person / group.

Вот что мне помогло обновить один элемент списка в Power Automate:

Экшен: Send an HTTP Request to SharePoint

Метод: POST

Uri: _vti_bin/client.svc/ProcessQuery

Заголовки:

 Content-Type: text/xml;charset="UTF-8"
X-Requested-With: XMLHTTPRequest
Accept: */*
  

Тело:

 <Request xmlns="http://schemas.microsoft.com/sharepoint/clientquery/2009" SchemaVersion="15.0.0.0" LibraryVersion="16.0.0.0" ApplicationName="Javascript Library">
    <Actions>
        <Method Name="SetFieldValue" Id="19" ObjectPathId="3">
            <Parameters>
                <Parameter Type="String">YourPersonField</Parameter>
                <Parameter Type="String">-1;#someone@yourorg.onmicrosoft.com</Parameter>
            </Parameters>
        </Method>
        <Method Name="SystemUpdate" Id="5" ObjectPathId="3" />
    </Actions>
    <ObjectPaths>
        <Property Id="1" ParentId="0" Name="Web" />
        <Method Id="2" ParentId="1" Name="GetList">
            <Parameters>
                <Parameter Type="String">/sites/YourSite/YourList</Parameter>
            </Parameters>
        </Method>
        <Method Id="3" ParentId="2" Name="GetItemById">
            <Parameters>
                <Parameter Type="Number">YourListItemID</Parameter>
            </Parameters>
        </Method>
        <StaticProperty Id="0" TypeId="{3747adcd-a3c3-41b9-bfab-4a64dd2f1e0a}" Name="Current" />
    </ObjectPaths>
</Request>
  

Изображение:
Отправьте HTTP-запрос в SharePoint

Ответ №2:

Решение вашей проблемы может быть тривиальным: просто удалите пробелы и новые строки из вашего XML-запроса.


Есть хорошая запись в блоге по адресу nearbaseline.com об этом. Заявление, отвечающее на вашу проблему, можно найти в середине этой статьи:

Важно: обратите внимание, что я удалил из XML табуляции, пробелы и окончания строк! Это обязательно, если вы этого не сделаете, вы получите неизвестную ошибку в больших телах запросов.