Google Apps脚本 - 如何将列(包含公式和格式)添加到从Google表单数据生成的电子表格中?

时间:2011-08-22 10:04:05

标签: google-apps-script

好的,所以我认为我需要做的事情相对复杂。目前我们有一个参与者可以填写的表格。我们有一个实现的脚本,这意味着每次提交表单时,它会在电子表格中创建一个新工作表,然后通过类似于IF函数的信息传递信息,将Yes和No答案更改为1和0.它看起来像这样:

//onFormSubmit
 function onFormSubmit(){
  var ss = SpreadsheetApp.getActiveSpreadsheet();
  var sheet = ss.getSheetByName("Form Responses");
  var headings = sheet.getRange(1, 1, 1, sheet.getLastColumn()).getValues();
  var lastRow = sheet.getRange(sheet.getLastRow(), 1, 1, sheet.getLastColumn()).getValues();
  var whoIsItFor = lastRow[0][1];

 if(ss.getSheetByName(whoIsItFor))
{
 var userSheet = ss.getSheetByName(whoIsItFor);
//if not make
} 
else 
{
var userSheet = ss.insertSheet(whoIsItFor);
userSheet.getRange(1, 1, 1, headings[0].length).setValues(headings);
}

// copy submitted data to user's sheet
userSheet.getRange(userSheet.getLastRow()+1, 1, 1, lastRow[0].length).setValues(lastRow);


var columns = new Array('K', 'L', 'M', 'N', 'O', 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z', 'AA', 'AB', 'AC', 'AD', 'AE', 'AF', 'AG', 'AH', 'AI', 'AJ', 'AK', 'AL', 'AM', 'AN', 'AO', 'AP', 'AQ', 'AR', 'AS', 'AT', 'AU', 'AV', 'AW', 'AX', 'AY', 'AZ', 'BA', 'BB', 'BC', 'BD', 'BE', 'BF', 'BG', 'BH', 'BI', 'BJ', 'BK', 'BL', 'BM', 'BN', 'BO', 'BP', 'BQ', 'BR', 'BS', 'BT', 'BU', 'BV', 'BW', 'BX', 'BY', 'BZ', 'CA', 'CB', 'CC', 'CD', 'CE', 'CF', 'CG', 'CH', 'CI', 'CJ', 'CK', 'CL', 'CM');

for (var i = 0; i < columns.length; ++i)
{

c = columns[i] + "2";

if (userSheet.getRange(c).getValue() == "Yes") {
  userSheet.getRange(c).setValue("1")
}
else {
  userSheet.getRange(c).setValue("0")
}

}  



}

现在我想实现下一个阶段。如果另一张具有各种公式和格式的工作表要添加到我当前脚本生成的工作表中,并且从表单生成的数据插入到包含公式的工作表的某个列中,我想要发生什么。我希望每次原始脚本生成新工作表时都会发生这种情况。包含各种公式和格式的工作表包含在同一电子表格中。

我希望这很有意义.....非常感谢你提前

1 个答案:

答案 0 :(得分:1)

听起来(我可能错了)你有一个真假问题的形式,每个表单提交将数据移动到一个新的工作表,现在你想从一个“主表”移动所有的功能和格式并将其插入到这个新创建的工作表中。

难道您不能只创建要将函数和格式导入到的“主表”的副本吗?然后,您可以从表单提交中输入数据。

https://developers.google.com/apps-script/service_spreadsheet

我直接从他们的API开始,因为我之前没有尝试过,但实质上,你会制作一个像这样的新表

//make the new sheet
masterSheet.copyTo("nameOfNewSheet");
//fill data in as usual

如果我正确解释了你的问题,请告诉我。

相关问题