2016-07-19 393 views
0

如果這個問題沒有立即顯現,我對Google Apps腳本來說很陌生。我試圖編寫一個Spreadsheets函數,它貫穿工作簿中表單提交表的每一行,並根據第一個單元格的值使用for循環更新第二個表單/範圍(在同一工作簿中)。但是,當我運行該功能時,沒有任何反應。getRange,getDataRange和getActiveRange之間的區別?

我敢肯定,錯誤在於我如何定義有問題的範圍,但我不是100%確定的。下面是我寫什麼修改後的版本:

function update() { 
    var ss = SpreadsheetApp.getActiveSpreadsheet(); 

    var secondSheet = ss.getSheets()[1]; 
    var submissionSheet = ss.getSheets()[0]; 

    var secondRowEnd = secondSheet.getLastRow(); 
    var submissionRowEnd = submissionSheet.getLastRow(); 

    var secondColumnEnd = secondSheet.getLastColumn(); 
    var submissionColumnEnd = submissionSheet.getLastColumn(); //used to define ranges dynamically 

    var secondRange = secondSheet.getValues(); 
    var submissionRange = submissionSheet.getValues(); 

    for(var i = 2; i <= submissionRowEnd; i++) { 

    var rock = secondRange.getCell(i, 1).getValue(); 
    var paper = secondRange.getCell(i, 2).getValue(); 
    var scissors = secondRange.getCell(i, 3).getValue(); 

    var status = secondRange.getCell(i, 4).getValue(); 
    var forStatus = secondRange.getCell(i, 5).getValue(); 

    if (status === "Do X!") { 
     for(var j = 2; j <= submissionRowEnd; j++) { 

     var jrock = submissionRange.getCell(j, 1).getValue(); 
     var jpaper = submissionRange.getCell(j, 2).getValue(); 
     var jscissors = submissionRange.getCell(j, 3).getValue(); 
     var jstatus = submissionRange.getCell(j, 4).getValue(); 

     if (status === forStatus) { 
      jrock.setValue(rock); 
      jpaper.setValue(paper); 
      jscissors.setValue(scissors); 
     } else { /*do nothing*/ } 
     } 
    } 
    } 

我一直在略微不同版本的代碼周現在盯着,所以任何和所有的眼睛上,這將是很大的,不勝感激!

+0

的Javascript!= Java和從您的代碼看起來你使用Javascript,因此請刪除Java標記。 – Thomas

+0

回答了我自己的問題:通過使用getRange()而不是getCell()來分離單個單元格。getValue()似乎已經完成了這個技巧。我太缺乏經驗知道這是不是一個「漂亮」的解決方案,但它的工作原理! – Maru

回答