Script google forme
SioGabx Messages postés 265 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}
- Script google forme
- Google maps satellite - Guide
- Dns google - Guide
- Google maps - Guide
- Google photo - Télécharger - Albums photo
- Mise en forme conditionnelle excel - Guide
1 réponse
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(); }
Merci pour votre retour,
Mais l'erreur persiste sur l'identification de la question portant sur le choix de la langue.
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
le message d'erreur est le suivant :
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