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*/ }
}
}
}
我一直在略微不同版本的代碼周現在盯着,所以任何和所有的眼睛上,這將是很大的,不勝感激!
的Javascript!= Java和從您的代碼看起來你使用Javascript,因此請刪除Java標記。 – Thomas
回答了我自己的問題:通過使用getRange()而不是getCell()來分離單個單元格。getValue()似乎已經完成了這個技巧。我太缺乏經驗知道這是不是一個「漂亮」的解決方案,但它的工作原理! – Maru