我有以下脚本(其中一些我找到并修改了我的需求:
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列。我在编辑时执行此脚本。所以基本上,当在这个fieild中输入“是”时,我将此记录移至名为“已完成”的表单
答案 0 :(得分: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())
}