2013-04-10 53 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

相關問題