我在堆栈溢出的第一个问题。我有一个谷歌电子表格与4个单独的工作表。
Sheet1是来自GForm的响应。表2,3,4有相同的数据,但在3种语言英语,泰米尔语,印地语,并命名为英语,泰米尔语,印地语。
目前,脚本从Sheet1获取单元格值数据,匹配语言泰米尔表中的数据,邮件与正确的语言泰米尔GDoc合并并发送电子邮件。
现在,我不知道如何让脚本从3种语言中选择一种不同的语言Gsheet,这取决于表单输入中的evalues4,即Radio。
有人能帮我弄清楚吗?使用ss.getSheetByName选择合适的语言Gsheet,并基于表单响应evalues4使用DriveApp.getFileById选择GDoc。
这是代码,如果我只按名称/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")
发布于 2017-06-27 02:51:16
对不起,完全忘了我在这里问过这个问题。同一个周末,我用If - else注释解决了这个问题:代替var ss,我使用var ssn,而不是var sheet3,我在重写中使用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");
}
发布于 2017-05-22 14:00:09
您可以使用lang变量来获得正确的工作表,因为它们有相同的名称。比如:
var sheet1 = ss.getSheetByName(lang); // where lang = "Tamil" for example
为了使用正确的模板,可以使用属性存储模板的id,如下所示:
var templateId = PropertiesService.getScriptProperties().getProperty(lang); // where lang = "Tamil" for example
var copyId = DriveApp.getFileById(templateId);
其中,属性设置为所需的语言名称。您可以使用代码来设置它们:
PropertiesService.getScriptProperties().setProperty('Tamil', '1Nxxxxxxxxxxxxxx2k');
https://stackoverflow.com/questions/44114479
复制相似问题