google-apps-script - 从 Google 表格导入时,Google Apps 脚本会在表单回复表格中添加额外的空白问题
问题描述
我正在使用 Google Apps 脚本将来自 Google 表格的问题添加到 Google 表单中。这些列表是从两个单独的数组中读取的,并作为单独的网格类型问题添加。我还将工作表设置为表单结果的目的地。
当我运行脚本时,表单会完美更新。如果要添加 10 个项目,则表格中会添加 10 个问题。但是,在链接的表单响应表中,通常会添加标题为“[Row 1]”的附加列。每次运行脚本时,附加列的数量及其位置都会发生变化。我一直无法接受任何模式。
我知道在表单的 UI 中创建问题时,“第 1 行”显示为网格类型问题中的默认第一项。我不确定这是否与它有关。仅供参考 - 网格项目允许添加多行问题,但我只添加一个问题。我知道有一个多项选择网格类型,但我不喜欢它的格式。
作为一种解决方法,我创建了一个脚本来删除所有这些附加列,但我真的很想弄清楚实际发生了什么。
关于正在发生的事情有什么想法吗?
这是我的代码的一部分:
function editForm()
{
var setupSheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName('Setup'); //Create variable for the Setup sheet
var metricSheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName('Final Metric Statements'); //Create variable for the Metric Statements sheet
var form = FormApp.openById(setupSheet.getRange("D1").getValue()); //Open form using the form ID from the setup sheet
var pageFour = form.addPageBreakItem().setTitle('Questions');
var emotLen = 0; //Counter for sub-emotion items
var featLen = 0; //Counter for sub-feature items
//Count number of items for first list
while (((metricSheet.getRange("C"+ (emotLen+2)).getValue()) != "") && ((metricSheet.getRange("C"+ (emotLen+2)).getValue()) != "#N/A")) //Go through sub-emotion column until a blank cell
{
emotLen++; //Increase the counter
}
//Count number of items for second list
while (((metricSheet.getRange("D"+ (featLen+2)).getValue()) != "") && ((metricSheet.getRange("D"+ (featLen+2)).getValue()) != "#N/A")) //Go through sub-feature column until a blank cell
{
featLen++; //Increase the counter
}
if (emotLen > 0)
{
var emotRng = metricSheet.getRange(2,3,emotLen); //Create a range for sub-emotions based on number of items and column
var emotArray = emotRng.getValues(); //Copy the items into an array
for (i=0; i <= (emotLen-1); i++)
{
var emotItem = form.addGridItem();
emotItem.setRows(emotArray[i]);
emotItem.setColumns(['Strongly Disagree', 'Disagree','Slightly Disagree', 'Neither Disagree or Agree', 'Slightly Agree', 'Agree', 'Strongly Agree', 'N/A']);//Add column header
emotItem.setRequired(true);
}
}
if (featLen > 0 )
{
var featRng = metricSheet.getRange(2,4,featLen); //Create a range for features based on number of items
var featArray = featRng.getValues(); //Copy the items into an array
for (i = 0; i <=(featLen-1); i++) //Go through all items in the array
{
var featItem = form.addGridItem();//Add item to survey
featItem.setRows(featArray[i]); //Add row item
featItem.setColumns(['Strongly Disagree', 'Disagree','Slightly Disagree', 'Neither Disagree or Agree', 'Slightly Agree', 'Agree', 'Strongly Agree', 'N/A']);//Add column header
featItem.setRequired(true);
}
}
//deleteRowColumns();
//Logger.log(emotLen, emotArray, featLen, featArray); //Logger used for debugging
}
解决方案
这似乎是一个错误!
我冒昧地在 Google 的问题跟踪器上为您报告了这一点,并详细说明了行为:
您可以点击页面左上角问题编号旁边的 ☆,让 Google 知道更多人正在遇到此问题,因此更有可能更快地被看到。
推荐阅读
- javascript - 如何在 JS 中将字符串转换为函数原型?
- c# - File.Exist always return false
- javascript - MediaWiki API,波兰字符
- android - “crashlytics 应用初始化程序禁用”是什么意思?
- javascript - 等待谷歌地图方向服务时禁用按钮
- c - 如何比较两个数学库实现?
- mongodb - 在 mongodb 中查找指定大小的句子的第一个单词
- unix - 在 Unix csh 脚本中获取昨天的日期
- google-compute-engine - 为什么从谷歌云快照恢复的虚拟机在其数据库中没有数据?
- java - Windows 和 Linux 之间的 Weblogic Xquery 异常区别