GAS - Select(获取)每个 GForm 输入的电子表格
GAS - Select (Get) Spreadsheet per GForm input
我在 Stack Overflow 中的第一个问题。
我有一个 Google Spreadsheet 和 4 个单独的 sheet。
Sheet1 是来自 GForm 的回复。 Sheet2、3、4 具有相同的数据,但有英语、泰米尔语、印地语三种语言,并命名为英语、泰米尔语、印地语。
目前脚本从 Sheet1 中获取单元格值日期,匹配泰米尔语 sheet 中的数据,邮件与正确的泰米尔语 GDoc 合并并通过电子邮件发送。
现在,我不知道如何让脚本选择不同的语言 Gsheet,3 种语言中的一种,取决于表单输入的 evalues4,它是一个单选按钮。
有人可以帮我弄清楚吗?
Select 适当的语言
Gsheet 使用 ss.getSheetByName 和
GDoc 使用 DriveApp.getFileById
基于表单响应 evalues4.
这是代码,如果我通过 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")
您可以使用 lang 变量来获得正确的 sheet,因为它们具有相同的名称。喜欢:
var sheet1 = ss.getSheetByName(lang); // where lang = "Tamil" for example
为了使用正确的模板,您可以使用 Properties 存储模板的 ID,例如:
var templateId = PropertiesService.getScriptProperties().getProperty(lang); // where lang = "Tamil" for example
var copyId = DriveApp.getFileById(templateId);
您在其中设置了所需语言名称的属性。您可以使用代码设置它们:
PropertiesService.getScriptProperties().setProperty('Tamil', '1Nxxxxxxxxxxxxxx2k');
抱歉,完全忘了我在这里问过这个问题。我在同一个周末解决了它,通过使用 If - else [注意:我使用 var ssn 而不是 var ss,而不是 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");
}
我在 Stack Overflow 中的第一个问题。 我有一个 Google Spreadsheet 和 4 个单独的 sheet。
Sheet1 是来自 GForm 的回复。 Sheet2、3、4 具有相同的数据,但有英语、泰米尔语、印地语三种语言,并命名为英语、泰米尔语、印地语。
目前脚本从 Sheet1 中获取单元格值日期,匹配泰米尔语 sheet 中的数据,邮件与正确的泰米尔语 GDoc 合并并通过电子邮件发送。
现在,我不知道如何让脚本选择不同的语言 Gsheet,3 种语言中的一种,取决于表单输入的 evalues4,它是一个单选按钮。
有人可以帮我弄清楚吗? Select 适当的语言 Gsheet 使用 ss.getSheetByName 和 GDoc 使用 DriveApp.getFileById 基于表单响应 evalues4.
这是代码,如果我通过 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")
您可以使用 lang 变量来获得正确的 sheet,因为它们具有相同的名称。喜欢:
var sheet1 = ss.getSheetByName(lang); // where lang = "Tamil" for example
为了使用正确的模板,您可以使用 Properties 存储模板的 ID,例如:
var templateId = PropertiesService.getScriptProperties().getProperty(lang); // where lang = "Tamil" for example
var copyId = DriveApp.getFileById(templateId);
您在其中设置了所需语言名称的属性。您可以使用代码设置它们:
PropertiesService.getScriptProperties().setProperty('Tamil', '1Nxxxxxxxxxxxxxx2k');
抱歉,完全忘了我在这里问过这个问题。我在同一个周末解决了它,通过使用 If - else [注意:我使用 var ssn 而不是 var ss,而不是 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");
}