2012-12-28 23 views
2

我有以下腳本(其中一些我發現和修改,以我的需求:谷歌文檔電子表格腳本 - 如何引用特定的細胞在一排作爲條件

function onedit(e) { 
    var ss = SpreadsheetApp.getActiveSpreadsheet(); 
    var targetSheetName = "Completed"; 
    var sourceSheetName = "Eligibility & Pre-Auths" 
    var targetSheet = ss.getSheetByName(targetSheetName); 
    var sourceSheet = ss.getActiveSheet(); 
    var sourceRow = sourceSheet.getActiveRange().getRow(); 
    var targetRow = targetSheet.getLastRow() + 1; 
    if (sourceSheet.getName() == SourceSheetName) {; 
    if (sourceRow[22]=="Yes") {; 
     if (targetRow > targetSheet.getMaxRows()) targetSheet.insertRowAfter(targetRow - 1); 
     sourceSheet.getRange(sourceRow, 1, 1, sourceSheet.getLastColumn()).copyTo (targetSheet.getRange(targetRow, 1)); 
     sourceSheet.deleteRow(sourceRow); 
    }; 
    }; 
} 

一切似乎除了工作我的條件 - 如果(sourceRow [22] ==「是」)

我是新來這個,所以我知道我只是不正確引用它

我只是想檢查文本「是「在當前行的第22列,我在編輯時執行這個腳本,所以基本上,當」是「被輸入到這個文件中,我將這個記錄移動到名爲「Completed」的表格中

回答

1

該語句getRow()返回一個整數,該範圍的行數,你想要的是22cd單元格的值行,所以儘量

var sourceRow = sourceSheet.getActiveRange().getRow(); 
    var sourceRowValue = sourceSheet.getRange(sourceRow,1,1,sourceSheet.getMaxColumn()).getValues(); 

,然後讓細胞值條件:

if (sourceRowValue[0][21]=="Yes") {; 
    ... 

getValues()結果始終是一個2維數組,這是爲[0]的原因,是0指數>>變21

請注意,我想如果你使用sourceSheet.getActiveCell().getValue()直接返回你正在寫的單元格的值的代碼比這更簡單...

試試這個小例子,我得到的價值列索引:

function onEdit(){ 
    var ss = SpreadsheetApp.getActiveSpreadsheet(); 
    var cellValue = ss.getActiveCell().getValue() 
ss.getRange('A1').setValue(cellValue+' in col '+ss.getActiveCell().getColumn()) 
} 
相關問題