我嘗試使用谷歌表單 API 更新我現有的表單。我在請求中填寫了位置字段,但仍然收到來自服務器的錯誤消息create_item.location.index is invalid or was not provided創(chuàng)建請求代碼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 apiv1
1 回答
翻翻過去那場雪
TA貢獻2065條經驗 獲得超14個贊
最后我發(fā)現了問題。當向表單中添加一個新項目時,我們必須從 index 開始0,但0它是 protobuf 中的默認值int,因此在請求發(fā)送時它將被忽略。解決方案:強制發(fā)送字段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)
}
- 1 回答
- 0 關注
- 140 瀏覽
添加回答
舉報
0/150
提交
取消
