Google Form API 创建、更新项目时出错

2024年 2月 6日 50.0k 0

google form api - 创建、更新项目时出错

问题内容

我尝试使用 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 - 创建、更新项目时出错的详细内容,更多请关注每日运维网(www.mryunwei.com)其它相关文章!

相关文章

JavaScript2024新功能:Object.groupBy、正则表达式v标志
PHP trim 函数对多字节字符的使用和限制
新函数 json_validate() 、randomizer 类扩展…20 个PHP 8.3 新特性全面解析
使用HTMX为WordPress增效:如何在不使用复杂框架的情况下增强平台功能
为React 19做准备:WordPress 6.6用户指南
如何删除WordPress中的所有评论

发布评论