我有一个谷歌脚本,它将根据谷歌工作表中的数据创建一个谷歌表单。但是,代码没有正确检测每行中的最后一个空单元格。相反,它写入行中的每个单元格,即使它是空的。所以表格上总是有15个选项的问题,因为这是表格的范围。下面是一个错误表单的示例。此处是指向该工作表的可编辑版本的链接。非常感谢。
function onOpen() {
var ss = SpreadsheetApp.getActiveSpreadsheet();
var createForm = [ {name: "Create form", functionName: "CreateFormfromSheet"}];
ss.addMenu("Generate Test", createForm);
}
function CreateFormfromSheet() {
var ss = SpreadsheetApp.getActiveSpreadsheet().getSheetByName('Sheet1');
var range = ss.getDataRange();
var data = range.getValues();
var numberRows = range.getNumRows();
var numberColumns = range.getNumColumns();
var firstRow = 2;
var form = FormApp.create(data[0][1]);
form.setDescription(data[0][4]);
for(var i=0;i<numberRows;i++){
var questionType = data[i][0];
if (questionType==''){
continue;
}
else if(questionType=='TEXT'){
form.addTextItem()
.setTitle(data[i][1])
.setHelpText(data[i][2])
.setRequired(true);
}
else if(questionType=='PARAGRAPH'){
form.addParagraphTextItem()
.setTitle(data[i][1])
.setHelpText(data[i][2])
.setRequired(true);
}
else if(questionType=='CHOICE'){
var rowLength = data[i].length;
var currentRow = firstRow+i;
var currentRangeValues = SpreadsheetApp.getActiveSpreadsheet().getSheetByName('Sheet1').getRange(currentRow,1,1,rowLength).getValues();
var getSheetRange = SpreadsheetApp.getActiveSpreadsheet().getSheetByName('Sheet1').getDataRange();
var numberOfColumnsSheet = getSheetRange.getNumColumns();
var numberOfOptionsInCurrentRow = numberOfColumnsSheet;
var lastColumnInRange = String.fromCharCode(64 + (numberOfOptionsInCurrentRow));
var range_string = 'E' + currentRow + ":" + lastColumnInRange + currentRow;
var optionsArray = SpreadsheetApp.getActiveSpreadsheet().getSheetByName('Sheet1').getRange(range_string).getValues();
var choicesForQuestion =[];
for (var j=0;j<optionsArray[0].length;j++){
choicesForQuestion.push(optionsArray[0][j]);
}
form.addMultipleChoiceItem()
.setTitle(data[i][1])
.setHelpText(data[i][2])
.setChoiceValues(choicesForQuestion)
.setRequired(true);
}
else if(questionType=='CHECKBOX'){
var rowLength = data[i].length;
var currentRow = firstRow+i;
var currentRangeValues = SpreadsheetApp.getActiveSpreadsheet().getSheetByName('Sheet1').getRange(currentRow,1,1,rowLength).getValues();
var getSheetRange = SpreadsheetApp.getActiveSpreadsheet().getSheetByName('Sheet1').getDataRange();
var numberOfColumnsSheet = getSheetRange.getNumColumns();
var numberOfOptionsInCurrentRow = numberOfColumnsSheet;
var lastColumnInRange = String.fromCharCode(64 + (numberOfOptionsInCurrentRow));
var range_string = 'E' + currentRow + ":" + lastColumnInRange + currentRow;
var optionsArray = SpreadsheetApp.getActiveSpreadsheet().getSheetByName('Sheet1').getRange(range_string).getValues();
var choicesForQuestion =[];
for (var j=0;j<optionsArray[0].length;j++){
choicesForQuestion.push(optionsArray[0][j]);
}
form.addCheckboxItem()
.setTitle(data[i][1])
.setHelpText(data[i][2])
.setChoiceValues(choicesForQuestion)
.setRequired(true);
}
else if(questionType=='LIST'){
var rowLength = data[i].length;
var currentRow = firstRow+i;
var currentRangeValues = SpreadsheetApp.getActiveSpreadsheet().getSheetByName('Sheet1').getRange(currentRow,1,1,rowLength).getValues();
var getSheetRange = SpreadsheetApp.getActiveSpreadsheet().getSheetByName('Sheet1').getDataRange();
var numberOfColumnsSheet = getSheetRange.getNumColumns();
var numberOfOptionsInCurrentRow = numberOfColumnsSheet;
var lastColumnInRange = String.fromCharCode(64 + (numberOfOptionsInCurrentRow));
var range_string = 'E' + currentRow + ":" + lastColumnInRange + currentRow;
var optionsArray = SpreadsheetApp.getActiveSpreadsheet().getSheetByName('Sheet1').getRange(range_string).getValues();
var choicesForQuestion =[];
for (var j=0;j<optionsArray[0].length;j++){
choicesForQuestion.push(optionsArray[0][j]);
}
form.addListItem()
.setTitle(data[i][1])
.setHelpText(data[i][2])
.setChoiceValues(choicesForQuestion)
.setRequired(true);
}
else if(questionType=='GRID'){
var rowLength = data[i].length;
var currentRow = firstRow+i;
var currentRangeValues = SpreadsheetApp.getActiveSpreadsheet().getSheetByName('Sheet1').getRange(currentRow,1,1,rowLength).getValues();
var getSheetRange = SpreadsheetApp.getActiveSpreadsheet().getSheetByName('Sheet1').getDataRange();
var numberOfColumnsSheet = getSheetRange.getNumColumns();
var numberOfOptionsInCurrentRow = numberOfColumnsSheet;
var lastColumnInRange = String.fromCharCode(64 + (numberOfOptionsInCurrentRow));
var range_string = 'E' + currentRow + ":" + lastColumnInRange + currentRow;
var optionsArray = SpreadsheetApp.getActiveSpreadsheet().getSheetByName('Sheet1').getRange(range_string).getValues();
var rowTitles =[];
for (var j=0;j<optionsArray[0].length;j++){
rowTitles.push(optionsArray[0][j]);
}
var rowLength = data[i+1].length;
var currentRow = firstRow+i+1;
var currentRangeValues = SpreadsheetApp.getActiveSpreadsheet().getSheetByName('Sheet1').getRange(currentRow,1,1,rowLength).getValues();
var getSheetRange = SpreadsheetApp.getActiveSpreadsheet().getSheetByName('Sheet1').getDataRange();
var numberOfColumnsSheet = getSheetRange.getNumColumns();
var numberOfOptionsInCurrentRow = numberOfColumnsSheet;
var lastColumnInRange = String.fromCharCode(64 + (numberOfOptionsInCurrentRow));
var range_string = 'E' + currentRow + ":" + lastColumnInRange + currentRow;
var optionsArray = SpreadsheetApp.getActiveSpreadsheet().getSheetByName('Sheet1').getRange(range_string).getValues();
var columnTitles =[];
for (var j=0;j<optionsArray[0].length;j++){
columnTitles.push(optionsArray[0][j]);
}
form.addGridItem()
.setTitle(data[i][1])
.setHelpText(data[i][2])
.setRows(rowTitles)
.setColumns(columnTitles)
.setRequired(true);
}
else if(questionType=='IMAGE'){
var img = UrlFetchApp.fetch(data[i][3]);
form.addImageItem()
.setTitle(data[i][1])
.setHelpText(data[i][2])
.setImage(img);
}
else if(questionType=='PAGE'){
form.addPageBreakItem()
.setTitle(data[i][1])
.setHelpText(data[i][2]);
}
else if(questionType=='SECTION'){
form.addSectionHeaderItem()
.setTitle(data[i][1])
.setHelpText(data[i][2]);
}
else if(questionType=='TIME'){
form.addTimeItem()
.setTitle(data[i][1])
.setHelpText(data[i][2]);
}
else{
continue;
}
}
}
使用CHOICE
的块,这是我将如何处理它:
else if (questionType=='CHOICE') {
// we already have data, no need to retrieve it again
var choicesForQuestion = [];
for (var j=4; j < numberColumns; j++)
if (data[i][j] != "") // only push if there's something to push
choicesForQuestion.push(data[i][j]);
form.addMultipleChoiceItem()
.setTitle(data[i][1])
.setHelpText(data[i][2])
.setChoiceValues(choicesForQuestion)
.setRequired(true);
}
var getSheetRange = SpreadsheetApp.getActiveSpreadsheet().getSheetByName('Sheet1').getDataRange();
此行获取整个图纸的范围,然后在下一行中使用上述范围:
var numberOfColumnsSheet = getSheetRange.getNumColumns();
其中列数为19,因为它包含第二行。
尝试:
var numberOfColumnSheet = someRowRange.getNumColumns();
我正在尝试使用GoogleSheets脚本根据工作表中的数据生成新的Google表单。我拥有的代码可以创建具有正确标题的新表单,但它不会使用表单中的任何其他信息填充表单:表单描述、问题、帮助文本等。我不知道我做错了什么。先谢谢你。 可编辑的工作表副本 代码如下:
如果你发现不管你在 URL 里面写什么都只是出现缺省页面的话,有可能是你的服务器不支持 PATH_INFO 变量,它被用来提供搜索引擎友好的 URL。解决这个问题的第一步是打开 application/config/config.php 文件,查找 URI Protocol 信息。在那里推荐你去尝试一些其他的设置方法。如果这些方法都无效,你就需要让 CodeIgniter 去强行加一个问号去标记你
如果你发现无论输入什么 URL 都只显示默认页面的话,那么可能是你的服务器不支持 PATH_INFO 变量,该变量用来提供搜索引擎友好的 URL 。 解决这个问题的第一步是打开 application/config/config.php 文件, 找到 URI Protocol 信息,根据注释提示,该值可以有几种不同的设置方式, 你可以逐个尝试一下。 如果还是不起作用,你需要让 CodeIgnite
我正在学习谷歌应用程序脚本,同时构建仪表板。我正在从几张纸上收集数据。我的目标是看每一张纸每周增长多少行。这让我了解了我的业务情况。 我可以获取我要检查的所有工作表的长度,但是我找不到任何代码来帮助我找到特定行中的第一个空单元格。我想将每个工作表的长度放在那里(在我的仪表板数据收集表中)以稍后创建图表。 我所拥有的是: 这是可行的,但我无法想象这是最好的解决方案(或最快的解决方案)。如果我的长度超
Table of Contents Smarty/PHP errors错误 Smarty can catch many errors such as missing tag attributes or malformed variable names. If this happens, you will see an error similar to the following: Smarty能够
有人能帮我把脚本布局转换成实际的功能代码吗?我有一般的编码知识,但我不知道正确的语法。 基本上,我需要的是一个脚本,当提交表单条目时,它会在所有工作表/选项卡之间循环。表单包含提交表单的人的姓名(字符串)、开始日期、结束日期,最后是注释字段(字符串)。 我需要脚本来遍历每个工作表的第5行,并查找在第一个表单字段中输入的字符串(提交表单的人的姓名)。如果它找到了该名称,它应该将与该名称对应的列保存到