
我尝试使用 google 表单 api 更新现有表单。我在请求中填写了位置字段,但仍然收到来自服务器 create_item.location.index 无效或未提供的错误消息
创建请求代码
func UpdateForm(formId string, form *forms.Form) *forms.Form {
var requestElements []*forms.Request
// Update form info
requestElements = append(requestElements, &forms.Request{
UpdateFormInfo: &forms.UpdateFormInfoRequest{
Info: form.Info,
UpdateMask: "*",
},
})
// Add items
for i, item := range form.Items {
element := &forms.Request{
CreateItem: &forms.CreateItemRequest{
Item: item,
Location: &forms.Location{Index: int64(i)},
},
}
requestElements = append(requestElements, element)
}
request := forms.BatchUpdateFormRequest{
IncludeFormInResponse: true,
Requests: requestElements,
}
response, err := formService.Forms.
BatchUpdate(formId, &request).
Context(context.TODO()).
Do()
if err != nil {
panic(err)
}
return response.Form
}
注意:我使用的是 form api v1
终于找到问题了。当添加一个新项目到表单中时,我们必须从索引 0 开始,但是 0 是 protobuf 中 int 的默认值,因此当请求发送时它将被忽略。
解决方案:强制发送字段index
// Add items
for i, item := range form.Items {
element := &forms.Request{
CreateItem: &forms.CreateItemRequest{
Item: item,
Location: &forms.Location{
Index: int64(i),
ForceSendFields: []string{"Index"},
},
},
}
requestElements = append(requestElements, element)
}
以上就是Google Form API - 创建、更新项目时出错的详细内容,更多请关注php中文网其它相关文章!
每个人都需要一台速度更快、更稳定的 PC。随着时间的推移,垃圾文件、旧注册表数据和不必要的后台进程会占用资源并降低性能。幸运的是,许多工具可以让 Windows 保持平稳运行。
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号