2014-03-04 48 views
1

我正在嘗試創建一個Google工作表腳本,它將獲取名稱列表並將其重新發送到Google表單。我有兩列數據,第一列包含一個人名。第二列包含第一個單元中的人邀請參加聚會的多個單元格。這會產生一個問題,第1列中的名稱可能在第2行,但是如果他們邀請20人,那麼第1列中的空格第3-21行。對你們大多數人來說,這聽起來毫無意義,但我希望能夠按照邀請對象的姓名按字母順序排列表單,並且能夠按照客人姓名的字母順序將其分類爲單獨的表單在第2欄中,同時仍然保留跟蹤他們的人。這是我完成任務的唯一方法。不正確的範圍高度 - Google腳本

我目前堅持寫數組回到表單,我不斷收到「不正確的範圍高度,是1但應該是339」。我已經想出瞭如何成功獲取一組數據,完全按照我想要的方式填充,但似乎無法得到這部分內容。我在這裏搜索並試圖實現我找到的解決方案,但沒有運氣。

這就是我來了這麼遠,它的工作,直到setValues方法(

function inviteSorter() { 
    var sheet = SpreadsheetApp.getActiveSpreadsheet(); 
    var current = sheet.getSheets()[0]; 
    var lastRow = current.getLastRow(); 
    var rangeData = current.getRange(2,1,lastRow-1,3); 
    var numColumns = rangeData.getNumColumns(); 
// Logger.log(rangeData); 
    var info = rangeData.getValues(); 
    var Name = {}; 
// Examines the cell in the first column, if it is empty replaces it with the name from the previous cell. 
    for (var i = 0; i< info.length; i++){ 
    if (typeof(info[i][0]) == "string" && info[i][0] == ""){ 
     Name[i] = Name[i-1]; 
    } else{ 
    Name[i] = info[i][0]; 
    } 

    } 
    var data = [] 
    for (var i = 0; i<lastRow-1; i++){ 
    data.push(Name[i]); 
    } 

    var writeRange = current.getRange(2,1,data.length,1); 

    writeRange.setValues([data]); 
+0

希望這有助於。也許你最後一行應該讀取writeRange.setValues(data);但從你學習如何編程的東西的外觀來看,這不是一個獲得幫助的好地方。祝你好運。 – eddyparkinson

+0

我承認我對這一切有一個基本的瞭解,但對於我可以實現我最想要的東西的概念已經足夠了解了。我通常掛在我看不到正確方式的東西上。我知道我需要將數組「轉置」爲列格式,但我沒有看到明顯的解決方案。 我原來的代碼已經是你的建議,並且我得到了一個數組錯誤的對象。我的代碼可以工作,除非我試圖將一行數據寫入列。就像我說的,我理解了這些概念,有時候我會掛斷電話。 – arhubart2

+0

謝謝你的建議。對不起,如果這種情況出現敵意,重新閱讀它有點類似。 – arhubart2

回答

4

你期待應該是一個二維數組,多行1列中的值。你會得到什麼在使用data.push(Name[i]);是一個簡單的字符串數組

試試這個方法:data.push([Name[i]]);這會返回一個數組的數組,並應滿足的條件爲setValues(data)

(不要忘記去掉括號你最後setValues聲明)

+0

這樣做。我知道我一直在做什麼,但只是沒有看到如何。謝謝! – arhubart2