【Microsoft Lists】ビューからリストアイテム更新をする

# ビューからリストアイテム更新をする

> 2021/12/08 日付とユーザーの列を空白指定することでクリア出来るようになったので修正。
<blockquote class="twitter-tweet"><p lang="en" dir="ltr">Data and User field can now be set to empty using &quot;&quot; in the actionInput.<br>The fix for this is rolling out and shall be available to everyone in a couple of days. :)</p>&mdash; Shreyansh Agrawal (@shreyansh_a) <a href="https://twitter.com/shreyansh_a/status/1467857491358674952?ref_src=twsrc%5Etfw">December 6, 2021</a></blockquote> <script async src="https://platform.twitter.com/widgets.js" charset="utf-8"></script>

[グリッドビューでの編集] を使用せずに、ビューから直接リストアイテムの値を更新します。

![customRowActionSetValue.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/111975/6ff5a966-d3ca-d637-1739-ab9f5e1850bd.gif)

## CheckedDate 列 (日付と時刻)

チェックボックスをクリックした際に、日付とユーザーを設定します。

- **customRowAction** の **setValue** を使用します。
- **CheckedDate** 列に **@now** (現在日付) を設定します。
- **Checker** 列に **@me**  (サインインしているユーザー) を設定します。
- **inlineEditField** を指定して、直接編集できるようにします。

```json:CheckedDate
{
  "$schema": "https://developer.microsoft.com/json-schemas/sp/v2/column-formatting.schema.json",
  "elmType": "div",
  "style": {
    "box-sizing": "border-box",
    "padding": "0 4px",
    "margin": "0"
  },
  "children": [
    {
      "elmType": "div",
      "style": {
        "display": "=if(@currentField, 'inherit', 'none')",
        "font-size": "16px",
        "padding": "0 2px",
        "font-weight": "bold"
      },
      "attributes": {
        "iconName": "CheckboxComposite",
        "class": "sp-css-color-MintGreenFont"
      },
      "customRowAction": {
        "action": "setValue",
        "actionInput": {
          "CheckedDate": "",
          "Checker": ""
        }
      }
    },
    {
      "elmType": "div",
      "style": {
        "cursor": "pointer",
        "display": "=if(@currentField, 'none', 'inherit')",
        "font-size": "16px",
        "padding": "0 2px",
        "font-weight": "bold"
      },
      "attributes": {
        "iconName": "Checkbox",
        "class": "sp-css-color-CoralFont"
      },
      "customRowAction": {
        "action": "setValue",
        "actionInput": {
          "CheckedDate": "@now",
          "Checker": "@me"
        }
      }
    },
    {
      "elmType": "div",
      "style": {
        "flex-wrap": "wrap"
      },
      "children": [
        {
          "elmType": "span",
          "style": {
            "padding": "0 4px",
            "font-weight": "bold"
          },
          "txtContent": "=if(@currentField, '確認済', '未確認')",
          "attributes": {
            "class": "=if(@currentField, 'sp-css-color-MintGreenFont', 'sp-css-color-CoralFont')"
          }
        },
        {
          "elmType": "span",
          "txtContent": "@currentField",
          "inlineEditField": "@currentField",
          "style": {
            "cursor": "pointer",
            "white-space": "nowrap",
            "padding": "0 2px",
            "--inline-editor-border-color": "green",
            "--inline-editor-border-width": "1px",
            "--inline-editor-border-style": "dotted",
            "--inline-editor-border-radius": "4px"
          },
          "attributes": {
            "class": "=if(@currentField, 'sp-css-color-MintGreenFont', 'sp-css-color-CoralFont')"
          }
        }
      ]
    }
  ]
}
```

## Checker 列 (ユーザーまたはグループ)

[CheckedDate 列](#checkeddate-%E5%88%97-%E6%97%A5%E4%BB%98%E3%81%A8%E6%99%82%E5%88%BB) のチェックボックスをクリックした際に、サインインしているユーザーが設定されます。

- **inlineEditField** を指定して、直接編集できるようにします。

```json:Checker
{
  "$schema": "https://developer.microsoft.com/json-schemas/sp/v2/column-formatting.schema.json",
  "elmType": "div",
  "txtContent": "@currentField.title",
  "inlineEditField": "@currentField",
  "style": {
    "cursor": "pointer",
    "border": "#ddd 1px solid",
    "--inline-editor-border-color": "green",
    "--inline-editor-border-width": "1px",
    "--inline-editor-border-style": "dotted",
    "--inline-editor-border-radius": "4px"
  }
}
```

---

# 参考サイト

- [【Microsoft Lists】アイテム更新をする書式設定のサンプル（随時更新） - MyNote365 (hatenadiary.com)](https://mynote365.hatenadiary.com/entry/2021/11/20/085945)
- [リスト形式の JSON を使用してフィールド値を設定するクイック SharePoint 承認 – TheWindowsUpdate.com](https://thewindowsupdate.com/2021/11/19/quick-sharepoint-approvals-using-list-formatting-json-to-set-field-values/)
- [高度な書式設定の概念 | Microsoft Docs](https://docs.microsoft.com/ja-jp/sharepoint/dev/declarative-customization/formatting-advanced#set-multiple-field-values-of-an-item-using-customrowaction)