LoginSignup
1
0

HTTP要求(REST)を使ってリストアイテムを追加する

Last updated at Posted at 2024-03-26

Microsoft 365の活用ネタのまとめに戻る

このページを参考に作ってみました。

はい、やっぱりエラーですね。

image.png

いつもの通り公式のヘルプは役に立ちませんね。人々を騙しているだけだな。

多くの場合、フローは認証エラーが原因で失敗します。このタイプのエラーが発生した場合、エラー メッセージに「Unauthorized」が含まれるか、エラー コード401または403が表示されます。通常、接続を更新することで認証エラーを修正できます。

やっとエラーがなくなった

image.png

ここでも問題でした。

"__metadata":{"type":"SP.Data.ListViewTestListItem"},

URLの方を使う。

image.png

これで調べてもSP.Data.ListViewTestListItemですね。

image.png

こんなエラーになる

"status": 400,
"message": "'SP.Data.承認申請ListViewTestItem' という名前の型はモデルで解決できません。モデルが使用可能な場合、各型名は有効な型に解決される必要があります。

401エラーの原因は _ がなかったことみたいですね。しかし普通に考えたら404が正しいと思うけど。

api/web/lists/getbytitle('@{variables('ListView')}')/Items

ヘッダの X-RequestForceAuthentication : True はなくてもOKでした。

X-RequestDigestもIf-Matchも不要ですね。

鬼門のユーザ型のフィールド

これを使ってみたら...

"Author" : "[{'Key': 'i:0#.f|membership|xxxxx@yyyyy.co.jp'}]"

相変わらず何をしたらいいのか分からないエラーメッセージ。嫌がらせにしか思えない

"status": 400,
"message": "ナビゲーション プロパティの値を読み取ろうとしているときに、NULL 以外の値を含む 'PrimitiveValue' ノードが見つかりましたが、'StartArray' ノード、'StartObject' ノード、または NULL 値を含む 'PrimitiveValue' ノードを読み取ることを想定していました。

以下の形式にしたらエラーはでませんがやはり更新の時と同じで値は入ってません。
リターンコードは201なんだな。

"Author" : {"Key": "i:0#.f|membership|xxxxx@yyyyy.co.jp"}

image.png

公式のヘルプを見ても不思議なことにユーザ型のフィールドの例はないんですよね。意図的に使わせないようにしてそうな気がします。

その中で以下のサイトを見つけました。

どうもサフィックスにIdをつけてユーザIdをセットするみたいな感じですね。

ユーザIdはメールアドレスから求められるみたい。

https://yyyyy.sharepoint.com/sites/sandbox_approval/_api/web/SiteUsers/getByEmail('xxxxx@yyyyyy.co.jp')?$select=Id

私の場合は数値の9でした。

image.png

{
        "__metadata":{"type":"SP.Data.ListViewTestListItem"},
        "Title":"020出生届",
        "AuthorizerId" : 9,
        "ApplicantId" : 9
}

image.png

グループの場合も...

https://yyyyy.sharepoint.com/sites/sandbox_approval/_api/web/sitegroups/GetByName('092Edit')?$select=Id

このグループは42でした

{
        "__metadata":{"type":"SP.Data.ListViewTestListItem"},
        "Title":"020出生届",
        "AuthorizerId" : 9,
        "ApplicantId" : 9,
        "ViewPermissionAfterApprovalId": 42
}

image.png

実際に使うのはどうしようか?

全てをIdでできれば問題ないけど、Claimsを使っているところが他にもあるし、統一はできないとなるとgetしてIdを得て、Json形式でIdを抽出するロジックも必要になることを考えると今回は項目の作成アクションのままで我慢するしかないですね。 ちょっと使いにくい仕様です。

image.png

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0