Maison > développement back-end > Golang > API Google Form - Erreur lors de la création, de la mise à jour des éléments

API Google Form - Erreur lors de la création, de la mise à jour des éléments

WBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWB
Libérer: 2024-02-06 11:33:14
avant
897 Les gens l'ont consulté

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

Contenu de la question

J'essaie de mettre à jour un formulaire existant à l'aide de l'API Google Forms. J'ai rempli le champ de localisation dans la demande mais je reçois toujours create_item.location.index 无效或未提供的错误消息

du serveur

Créer un code de demande

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
}
Copier après la connexion

Remarque : j'utilise form api v1form api v1


正确答案


终于找到问题了。当添加一个新项目到表单中时,我们必须从索引 0 开始,但是 0 是 protobuf 中 intindex

Bonne réponse

🎜J'ai finalement trouvé le problème. Lors de l'ajout d'un nouvel élément au formulaire, nous devons commencer à l'index 0, mais 0 est la valeur par défaut pour int dans protobuf, donc quand Il sera ignoré lors de l'envoi de la demande. Solution : Forcer l'envoi des champs 🎜🎜
// 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)
}
Copier après la connexion

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal