2013-04-10 67 views
1

比方说,我有一个谷歌文档的Form收集以下信息:精华部分,并把它写在单独的行

  • 时间戳(默认域)
  • 名称
  • 参考#

表单数据,那么伸展图表上显示如下:

4/10/2013 16:20:31 | Jack, Jill, Oscar | Ref6656X 

(注:人名的数目可以是从1到很多的任何地方)

我需要的数据出现在电子表格如下:

4/10/2013 16:20:31 | Jack | Ref6656X 
4/10/2013 16:20:31 | Jill | Ref6656X 
4/10/2013 16:20:31 | Oscar | Ref6656X 

我经常可以破译和编辑谷歌Apps脚本(JavaScript?),但我不知道如何用该语言思考,以便为我自己创建它(特别是在名称字段中具有未知数量的名称)。我如何开始解决这个问题?

回答

1

首先,在开始编写代码之前,您有一些选择。

  • 你想修改该公司的意见表单输入电子表格,或产生具有修改的数据另纸?如果您想记录用户实际输入的内容,最好只保留原始数据。如果您使用第二张工作表进行按摩输出,除非您采取措施将其隐藏,否则多个标签的存在可能会让用户感到困惑。

  • 您是否希望在表单进入时进行修改,或者在之后的某个时间点(批量)进行修改?如果您已经收集了数据,则必须进行批量处理,并且这将涉及循环,并且必须在事情的中间处理插入的新行。为了在表单提交时处理表单,您需要设置一个由表单提交触发的功能,并且只能进一步向下扩展表格......但您有更多的学习要做 - 请参阅Container-Specific Triggers,Understanding TriggersUnderstanding Events为背景信息。

  • 您会主要使用电子表格服务功能还是JavaScript数组?这种选择通常与速度有关 - 您可以在JavaScript中执行的操作越多,脚本的速度就会越快,但两者之间的切换起初可能会造成混淆。

下面是一个用于批量处理的示例函数。它将所有现有数据读取到数组中,通过该数据并将所有行复制到新数组中,将多个名称扩展为多行。完成后,现有的工作表数据将被覆盖。 (注 - 未经调试或测试。)

function bulkProcess() { 
    var ss = SpreadsheetApp.getActiveSpreadsheet(); 
    var dataIn = ss.getDataRange().getValues(); 
    var dataOut = []; 

    for (var row in dataIn) { // Could use: for (var row = 0; row < dataIn.length; row++) 
    var names = dataIn[row][1].split(','); // array of names in second column 
    var rowOut = dataIn[row]; 
    for (var i in names) { 
     rowOut[1] = names[i]; // overwrite with single name 
     dataOut.push(rowOut); // then copy to dataOut array 
    } 
    } 
    // Write the updated array back to spreadsheet, overwriting existing values. 
    ss.getRange(1,1,dataOut.length,dataOut[0].length).setValues(dataOut); 
} 
+0

我已经辞职了,意识到这个问题只会在这里消失,所以这是一个惊喜!至于选择#1,我打算将所有表单数据捕获到镜像电子表格上,因为我不想操纵实际的实际数据。至于多个标签的存在/外观,在这种特殊情况下这将是一个非问题。 (更多关于) – 5th4x4 2013-04-16 19:22:33

+0

至于选择#2,我原来的计划是在它刚到达时(通过表格提交)处理最新的数据。不过,我不确定如果两个或更多的提交同时发生(或几乎同时发生),触发器的行为如何。因此,我要测试看看处理所有表单提交需要多长时间。然而,我主要关心的是,我需要保持刷新的数据才能在用户页面上查看,而且我对Google Docs的早期使用经验表明它非常缓慢。 – 5th4x4 2013-04-16 20:12:26

+0

这就是说,当利用表单功能和Javascript处理时,你已经在速度/效率方面给了我启发。就我个人而言,我更喜欢编码所有东西,但Javascript对我来说仍然是新的,所以我一直非常依赖电子表格功能。 – 5th4x4 2013-04-16 20:13:03

相关问题