1

Ma 1ère question dans Stack Overflow. J'ai une feuille de calcul Google avec 4 feuilles individuelles.GAS - Sélectionner (Obtenir) Feuille de calcul par entrée GForm

Sheet1 est des réponses de GForm. Sheet2,3,4 ont les mêmes données mais en 3 langues anglais, tamoul, hindi et nommé anglais, tamoul, hindi.

Actuellement, le script prend la date de valeur de la cellule de Sheet1, correspond aux données dans la feuille Tamoul de la langue, le courrier fusionne avec la langue correcte Tamil GDoc et l'envoie par courrier électronique.

Maintenant, je ne peux pas comprendre comment faire le script choisir un Gsheet de langage différent, l'un des 3, en fonction de l'evalues4 de l'entrée de formulaire, qui est un bouton radio.

Quelqu'un peut-il m'aider à le comprendre? Sélectionnez la langue appropriée Feuille G en utilisant ss.getSheetByName et GDoc en utilisant DriveApp.getFileById en fonction de la réponse Form evalues4.

Voici le code et qui fonctionne bien, si je ne saisis qu'une seule langue par name/sheetID/DocID.

//Get information from the form and set as variables 
function onFormSubmit(e) 
{ 
var Time = e.values[0]; 
var email = e.values[1]; 
var fog = e.values[2]; 
var mog = e.values[3]; 
var lang = e.values[4]; 
var do_date = e.values[5]; 

//Match chosen date from data sheet & get Row Number 
function findInColumn() { 
var data = do_date; 
var ss = SpreadsheetApp.getActiveSpreadsheet(); 
var sheet1 = ss.getSheetByName("Tamil"); 
var range = sheet1.getRange(1,1,sheet1.getLastRow(),1); 
var values= range.getValues(); 
var row = 0; 
    while (values[row] && values[row][0] !== data) { 
    row++; 
    } 
    if (values[row][0] === data) 
    return row+1; 
    else 
    return -1; 
} 

//Use above Row number to load in Range, get values, assign to variable cells 
var ss = SpreadsheetApp.getActiveSpreadsheet(); 
var sheet3 = ss.getSheetByName("Tamil"); 
// Get range of cells in All columns and All rows with entries 
var dataRange = sheet3.getRange(findInColumn(), 1, 1, sheet3.getLastColumn()); 
// Get entries for each row in the Range. 
var data = dataRange.getValues(); 
// Set each value to a unique variable 
    for (i in data) { 
    var cell = data[i]; 

// Get document template, copy it as a new doc with Name and email, and save the id 
var copyId = DriveApp.getFileById("1Nxxxxxxxxxxxxxx2k") 
+0

Que diriez-vous « ss.getSheetByName (lang) "où lang est" var lang = e.values ​​[4] " –

+0

Avez-vous trouvé une solution à votre problème? –

Répondre

1

Désolé, complètement oublié que je l'avais posé la question ici. Je l'ai résolu le même week-end, en utilisant le cas - d'autre [Note: Au lieu de var ss je var ssn, et au lieu de var Feuil3 je var tocopyID dans le rewrite]

//Use above Row number to load in Range, get values, assign to variable cells 
var ss = SpreadsheetApp.getActiveSpreadsheet(); 
    if (lang === "Tamil"){ 
    var ssn = ss.getSheetByName("Tamil"); 
    var tocopyId = DriveApp.getFileById("1NxxxxTamil"); 
    } 
    else if (lang === "Hindi"){ 
    var ssn = ss.getSheetByName("Hindi"); 
    var tocopyId = DriveApp.getFileById("Hindi"); 
    } 
    else if (lang === "English"){ 
    var ssn = ss.getSheetByName("English"); 
    var tocopyId = DriveApp.getFileById("1NxxxxEnglish"); 
    } 
+0

Vous pouvez marquer votre réponse comme acceptée, afin que ce fil puisse apparaître comme résolu. –

+0

Fait, merci de me guider à travers l'étiquette et la patience. –

0

Vous pouvez utiliser votre variable lang pour obtenir la bonne feuille, car elles ont le même nom. Comme:

var sheet1 = ss.getSheetByName(lang); // where lang = "Tamil" for example 

Pour utiliser le modèle correct, vous pouvez stocker l'ID de votre modèle avec le Properties comme:

var templateId = PropertiesService.getScriptProperties().getProperty(lang); // where lang = "Tamil" for example 
var copyId = DriveApp.getFileById(templateId); 

Si vous avez des propriétés définies avec le nom de la langue que vous voulez. Vous pouvez les définir avec le code:

PropertiesService.getScriptProperties().setProperty('Tamil', '1Nxxxxxxxxxxxxxx2k');