SharePoint 2010 のリスト Web サービス UpdateList が「存在しなくなったオブジェクトを使用しようとしました」で失敗しますが、実際には存在します。
既存のフィールドの属性を更新したいと考えています。デモンストレーションの目的で、Description を簡単に更新できる必要があります。haufe.sharepoint 0.1.9 を使用して拡張すると、アイテムのクエリ/更新とフィールドの削除を行うことができます。更新および削除中に変更が観察されたため、リストに正しく対処していると確信しています。a) フィールドは削除可能であり、b) 「名前」または「ID」を変更すると、エラーは「その名前のフィールドが見つかりませんでした」に変わるため、フィールドも正確に対処されていると思います。
SUDS から SOAP メッセージをダンプすると、さまざまなメッセージと結果を表示できます。以下に 3 つのテスト ケースを示します。1つ目は失敗です。2 つ目は、名前が一致しないと別のエラーが発生することを示しています。3 つ目は、名前でフィールドを削除する方法を示しています。
次にどこに行くべきかについてのアイデアはありますか?同じフィールドを削除できるだけでなく、フィールドを更新するための特別な許可が存在する可能性はありますか? 私はサブサイトの所有者ですが、SharePoint 管理者でもサーバー管理者でもありません。そのため、ログを確認したり、カスタム コードをインストールしたりすることは困難です。そのため、私は Python Web サービス アプローチを使用しています。私はほぼ完全に困惑しています。
ありがとう、ロブ
メッセージ: これはフィールド「説明」を更新するために機能するはずですが、機能しません。フィールド ID の使用に加えて、Name、DisplayName、および StaticName を試してみましたが、役に立ちませんでした。MSFT リファレンス: http://msdn.microsoft.com/en-us/library/lists.lists.updatelist%28v=office.12%29.aspx
<?xml version="1.0" encoding="UTF-8"?>
<SOAP-ENV:Envelope xmlns:ns0="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ns1="http://schemas.microsoft.com/sharepoint/soap/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/">
<SOAP-ENV:Header/>
<SOAP-ENV:Body>
<ns1:UpdateList>
<ns1:listName>D538A29D-6DD4-423A-9E7D-2697917BDA78</ns1:listName>
<ns1:updateFields>
<Fields>
<Method ID="1">
<Field ID="08d8fb05-0de8-4e19-988c-e204ade07f47" Description="new desc"/>
</Method>
</Fields>
</ns1:updateFields>
</ns1:UpdateList>
</SOAP-ENV:Body>
</SOAP-ENV:Envelope>
フォルトは次のとおりです。
<soap:Fault>
<faultcode>soap:Server</faultcode>
<faultstring>Exception of type 'Microsoft.SharePoint.SoapServer.SoapServerException' was thrown.</faultstring>
<detail>
<errorstring xmlns="http://schemas.microsoft.com/sharepoint/soap/">Attempted to use an object that has ceased to exist. (Exception from HRESULT: 0x80030102 (STG_E_REVERTED))</errorstring>
<errorcode xmlns="http://schemas.microsoft.com/sharepoint/soap/">0x80030102</errorcode>
</detail>
</soap:Fault>
メッセージ: フィールドが見つからないことを期待していましたが、見つかりませんでした。基本的に、これは名前が間違っていると別のエラーになることを証明しています。
<?xml version="1.0" encoding="UTF-8"?>
<SOAP-ENV:Envelope xmlns:ns0="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ns1="http://schemas.microsoft.com/sharepoint/soap/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/">
<SOAP-ENV:Header/>
<SOAP-ENV:Body>
<ns1:UpdateList>
<ns1:listName>D538A29D-6DD4-423A-9E7D-2697917BDA78</ns1:listName>
<ns1:updateFields>
<Fields>
<Method ID="1">
<Field ID="q08d8fb05-0de8-4e19-988c-e204ade07f47" Description="new desc"/>
</Method>
</Fields>
</ns1:updateFields>
</ns1:UpdateList>
</SOAP-ENV:Body>
</SOAP-ENV:Envelope>
メッセージ: このようにフィールドを削除できます。これは、フィールドを何らかの方法でうまく操作できることを証明しています。
<?xml version="1.0" encoding="UTF-8"?>
<SOAP-ENV:Envelope xmlns:ns0="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ns1="http://schemas.microsoft.com/sharepoint/soap/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/">
<SOAP-ENV:Header/>
<SOAP-ENV:Body>
<ns1:UpdateList>
<ns1:listName>D538A29D-6DD4-423A-9E7D-2697917BDA78</ns1:listName>
<ns1:deleteFields>
<Fields>
<Method ID="3">
<Field Name="myText"/>
</Method>
</Fields>
</ns1:deleteFields>
</ns1:UpdateList>
</SOAP-ENV:Body>
</SOAP-ENV:Envelope>