1

我的第一个问题堆栈溢出。 我有一张Google电子表格,里面有4张单独的工作表。GAS - 每个GForm输入选择(获取)电子表格

Sheet1是来自GForm的响应。 Sheet2,3,4有相同的数据,但有3种语言的英语,泰米尔语,印地语,并命名为英语,泰米尔语,印地语。

目前,脚本从Sheet1中获取单元格值日期,匹配泰米尔语言表中的数据,邮件与正确语言Tamil GDoc合并并通过电子邮件发送。

现在,我无法弄清楚如何让脚本选择一种不同的语言Gsheet,其中的3个,取决于来自Form输入的evalues4,这是一个单选按钮。

有人可以帮我弄明白吗? 使用ss.getSheetByName和 选择合适的语言 Gsheet使用DriveApp.getFileById 的GDoc基于Form响应evalues4。

这里是代码和哪些工作正常,如果我通过名称/ 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

如何“ss.getSheetByName (lang)“其中lang是”var lang = e.values [4]“ –

+0

您是否找到解决问题的方法? –

回答

1

对不起,完全忘了,我问过的问题在这里。我解决了它在同一个周末,使用如果 - 其他[注:除了变种SS的我用VAR SSN,并代替VAR表Sheet 3我曾经在改写VAR tocopyID]

//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

您可以将您的答案标记为已接受,以便此线程可能显示为已解决。 –

+0

完成,谢谢你通过礼仪和耐心走过我。 –

0

你可以使用你的lang变量来获取正确的表格,因为他们有相同的名字。像:

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

对于使用正确的模板,您可以在模板的ID存储与Properties这样的:

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

如果你有你想要的语言名称设置属性。你可以用代码中设置它们:

PropertiesService.getScriptProperties().setProperty('Tamil', '1Nxxxxxxxxxxxxxx2k'); 
相关问题