使用 JSON 列格式,我在 Microsoft 列表中设置了一个按钮,单击该按钮时会设置三列的值:
"customRowAction": {
"action": "setValue",
"actionInput": {
"St01Status": "=if([$St01Status] == 'Completed', 'Pending', 'Completed')",
"St01Appver": "=if([$St01Status] == 'Completed', '', '@me')",
"St01AppDate": "=if([$St01Status] == 'Completed', '', '@now')"
}
我发现在一台计算机上使用Chrome浏览器时,此行会导致错误:
"St01AppDate": "=if([$St01Status] == 'Completed', '', '@now')"
错误是:
“输入如下日期和时间:2012 年 12 月 23 日下午 2:25”
所以它不喜欢
@now
正在生成的内容。
但是在其他计算机上,它不会导致错误,并执行所需的行为。
看来这是Chrome浏览器中
Language
设置造成的。
当语言设置为
English (United States)
时,该按钮将按需要工作。
当语言设置为
English (Australia)
时,该按钮会导致错误。
奇怪的是,列表所在的站点的区域设置是
English (Australia)
- 所以您会认为行为会是相反的。
问题
如何创建一个无论浏览器的语言设置如何都可以工作的
@now
值?
下面是两个浏览器中的语言设置和站点区域设置的屏幕截图。
供参考,这里提出了相关问题但从未收到答案:
我的 SharePoint 列表中有一个日期和时间(仅包含日期设置)列。
我正在使用这个 JSON,它对我来说效果很好:
{
"$schema": "https://developer.microsoft.com/json-schemas/sp/v2/column-formatting.schema.json",
"elmType": "button",
"txtContent": "Update item",
"customRowAction": {
"action": "setValue",
"actionInput": {
"DateColumn": "=if([$Status]=='Completed',[$DateColumn],toLocaleDateString(@now))"
}
}
}
其中
DateColumn
和 Status
是 SharePoint 列表列的内部名称。您可以按照本文获取列的内部名称:如何在 SharePoint Online 中查找列的内部名称?
输出: