Script google forme

Fermé
Gontran - 3 août 2022 à 23:38
SioGabx Messages postés 265 Date d'inscription mardi 21 août 2018 Statut Membre Dernière intervention 17 novembre 2022 - 4 août 2022 à 14:33

Bonjour à tous, 

J'essaie de traduire mon formulaire google forme automatiquement du français vers l'anglais et le portugais en fonction du choix de l'utilisateur. 

J'ai defini deux fonctions : traduireFormulaire_en (pour la traduction en anglais) et traduireFormulaire_pt (pour la traduction en portugais). 

Mais j'ai du mal avec ma dernier partir où je defini le declencheur. Mon code est le suivant. 

// @ts-nocheck

/**

 */

function traduireFormulaire_en() {

  const language = "en";

  const form = FormApp.getActiveForm();

  const formId = form.getId();

  const newFormFile = DriveApp.getFileById(formId).makeCopy(form.getTitle() + " " + language);

  const newForm = FormApp.openById(newFormFile.getId());

  newForm.setTitle(LanguageApp.translate(form.getTitle(), 'fr', language));

  newForm.setDescription(LanguageApp.translate(form.getDescription(), 'fr', language));

  newForm.getItems().forEach(function (item) {

    item.setTitle(LanguageApp.translate(item.getTitle(), 'fr', language));

    item.setHelpText(LanguageApp.translate(item.getHelpText(), 'fr', language));

    const type = item.getType();

    let itemChoices = "";

    if (type == FormApp.ItemType.MULTIPLE_CHOICE) {

      itemChoices = item.asMultipleChoiceItem()

    }

    else if (type == FormApp.ItemType.CHECKBOX) {

      itemChoices = item.asCheckboxItem()

    }

    else if (type == FormApp.ItemType.LIST) {

      itemChoices = item.asListItem()

    }

    if (itemChoices != "") {

      let translatedChoices = [];

      itemChoices.getChoices().forEach(function (choice) {

        translatedChoices.push(LanguageApp.translate(choice.getValue(), 'fr', language));

      })

      itemChoices.setChoiceValues(translatedChoices);

    }

    let itemGrid = "";

    if (type == FormApp.ItemType.GRID) {

      itemGrid = item.asGridItem();

    }

    else if (type == FormApp.ItemType.CHECKBOX_GRID) {

      itemGrid = item.asCheckboxGridItem();

    }

    if (itemGrid != "") {

      let translatedRows = [];

      let translatedColumns = [];

      itemGrid.getRows().forEach(function (row) {

        translatedRows.push(LanguageApp.translate(row, 'fr', language));

      })

      itemGrid.getColumns().forEach(function (col) {

        translatedColumns.push(LanguageApp.translate(col, 'fr', language));

      })

      itemGrid.setRows(translatedRows);

      itemGrid.setColumns(translatedColumns);

    }

  })

}

function traduireFormulaire_en() {

  const language = "pt";

  const form = FormApp.getActiveForm();

  const formId = form.getId();

  const newFormFile = DriveApp.getFileById(formId).makeCopy(form.getTitle() + " " + language);

  const newForm = FormApp.openById(newFormFile.getId());

  newForm.setTitle(LanguageApp.translate(form.getTitle(), 'fr', language));

  newForm.setDescription(LanguageApp.translate(form.getDescription(), 'fr', language));

  newForm.getItems().forEach(function (item) {

    item.setTitle(LanguageApp.translate(item.getTitle(), 'fr', language));

    item.setHelpText(LanguageApp.translate(item.getHelpText(), 'fr', language));

    const type = item.getType();

    let itemChoices = "";

    if (type == FormApp.ItemType.MULTIPLE_CHOICE) {

      itemChoices = item.asMultipleChoiceItem()

    }

    else if (type == FormApp.ItemType.CHECKBOX) {

      itemChoices = item.asCheckboxItem()

    }

    else if (type == FormApp.ItemType.LIST) {

      itemChoices = item.asListItem()

    }

    if (itemChoices != "") {

      let translatedChoices = [];

      itemChoices.getChoices().forEach(function (choice) {

        translatedChoices.push(LanguageApp.translate(choice.getValue(), 'fr', language));

      })

      itemChoices.setChoiceValues(translatedChoices);

    }

    let itemGrid = "";

    if (type == FormApp.ItemType.GRID) {

      itemGrid = item.asGridItem();

    }

    else if (type == FormApp.ItemType.CHECKBOX_GRID) {

      itemGrid = item.asCheckboxGridItem();

    }

    if (itemGrid != "") {

      let translatedRows = [];

      let translatedColumns = [];

      itemGrid.getRows().forEach(function (row) {

        translatedRows.push(LanguageApp.translate(row, 'fr', language));

      })

      itemGrid.getColumns().forEach(function (col) {

        translatedColumns.push(LanguageApp.translate(col, 'fr', language));

      })

      itemGrid.setRows(translatedRows);

      itemGrid.setColumns(translatedColumns);

    }

  })

}

const form = FormApp.getActiveForm();

const formId = form.getId();

var choice = MultipleChoiceItem('Langue')

if (choice =='English') {traduireFormulaire_en}

else if (choice=='English') {traduireFormulaire_pt}

A voir également:

1 réponse

SioGabx Messages postés 265 Date d'inscription mardi 21 août 2018 Statut Membre Dernière intervention 17 novembre 2022 100
Modifié le 4 août 2022 à 12:38

Ton problème est que le script ne se lance pas ?

Normalement, pour appeller une fonction en JavaScript, il faut la terminer par des parenthèses, dans ta dernière partie de code on obtient donc :

if (choice =='English') {
traduireFormulaire_en();
}else if (choice=='English') {
traduireFormulaire_pt();
}

0

Merci pour votre retour, 

Mais l'erreur persiste sur l'identification de la question portant sur le choix de la langue. 

var choice = MultipleChoiceItem('Langue')
0
SioGabx Messages postés 265 Date d'inscription mardi 21 août 2018 Statut Membre Dernière intervention 17 novembre 2022 100 > Gontran
4 août 2022 à 13:47

Vous pouvez donner ici le message d'erreur ?

Vous pouvez aussi lire la documentation ici : https://developers.google.com/apps-script/reference/forms/multiple-choice-item

0
Gontran > SioGabx Messages postés 265 Date d'inscription mardi 21 août 2018 Statut Membre Dernière intervention 17 novembre 2022
4 août 2022 à 13:50

le message d'erreur est le suivant :

Erreur
ReferenceError: MultipleChoiceItem is not defined
(anonyme)@Code.gs:132
0
SioGabx Messages postés 265 Date d'inscription mardi 21 août 2018 Statut Membre Dernière intervention 17 novembre 2022 100 > Gontran
Modifié le 4 août 2022 à 14:44

L'erreur que tu viens de me transmettre indique que MultipleChoiceItem n'est pas défini.

As tu déjà créé un formulaire dans lequel l'utilisateur indique sa langue ?

Référe toi à la documentation que je t'ai donnée plus haut ou tu trouveras un exemple de création d'un choix multiple 

 `

Une autre façon de faire (beaucoup plus simple) serait de récupérer la langue du navigateur internet pour définir celle du formulaire, tu pourrais regarder de ce côté

https://www.w3schools.com/jsref/prop_nav_language.asp

0