Script google forme

Gontran -  
SioGabx Messages postés 260 Date d'inscription   Statut Membre Dernière intervention   -

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}

1 réponse

  1. SioGabx Messages postés 260 Date d'inscription   Statut Membre Dernière intervention   100
     

    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
    1. Gontran
       

      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
      1. Gontran > SioGabx Messages postés 260 Date d'inscription   Statut Membre Dernière intervention  
         

        le message d'erreur est le suivant :

        Erreur
        ReferenceError: MultipleChoiceItem is not defined
        (anonyme)@Code.gs:132
        0
      2. SioGabx Messages postés 260 Date d'inscription   Statut Membre Dernière intervention   100 > Gontran
         

        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