首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >GAS -每个GForm输入选择(Get)电子表格

GAS -每个GForm输入选择(Get)电子表格
EN

Stack Overflow用户
提问于 2017-05-22 13:42:34
回答 2查看 191关注 0票数 1

我在堆栈溢出的第一个问题。我有一个谷歌电子表格与4个单独的工作表。

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

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

现在,我不知道如何让脚本从3种语言中选择一种不同的语言Gsheet,这取决于表单输入中的evalues4,即Radio。

有人能帮我弄清楚吗?使用ss.getSheetByName选择合适的语言Gsheet,并基于表单响应evalues4使用DriveApp.getFileById选择GDoc。

这是代码,如果我只按名称/sheetID/DocID输入一种语言,那么代码就可以正常工作。

代码语言:javascript
运行
复制
//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")
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2017-06-27 02:51:16

对不起,完全忘了我在这里问过这个问题。同一个周末,我用If - else注释解决了这个问题:代替var ss,我使用var ssn,而不是var sheet3,我在重写中使用var tocopyID。

代码语言:javascript
运行
复制
    //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");
  }
票数 1
EN

Stack Overflow用户

发布于 2017-05-22 14:00:09

您可以使用lang变量来获得正确的工作表,因为它们有相同的名称。比如:

代码语言:javascript
运行
复制
var sheet1 = ss.getSheetByName(lang); // where lang = "Tamil" for example

为了使用正确的模板,可以使用属性存储模板的id,如下所示:

代码语言:javascript
运行
复制
var templateId = PropertiesService.getScriptProperties().getProperty(lang); // where lang = "Tamil" for example
var copyId = DriveApp.getFileById(templateId);

其中,属性设置为所需的语言名称。您可以使用代码来设置它们:

代码语言:javascript
运行
复制
PropertiesService.getScriptProperties().setProperty('Tamil', '1Nxxxxxxxxxxxxxx2k');
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/44114479

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档