在谷歌应用程序脚本中,我希望能够输入一个整数值(1-10),然后让脚本根据查找将输入该值的单元格更改为字符串。基本上就是这样:
这就是我所拥有的,但它从未做过任何事情。我甚至无法让单元格更改自己的文本值。
function onEdit(event){
var sheet = event.source.getActiveSheet();
var editedCell = sheet.getActiveCell();
var editedCellRange = SpreadsheetApp.getActiveSheet().getRange(editedCell);
var columnToSortBy = 4;
var ss = SpreadsheetApp.getActiveSpreadsheet();
var Values = [ss.getRange('I2'),ss.getRange('I3'),ss.getRange('I4'),ss.getRange('I5'),ss.getRange('I6'),ss.getRange('I7'),ss.getRange('I8'),ss.getRange('I9'),ss.getRange('I10'),ss.getRange('I11')];
if(editedCell.getColumn() == columnToSortBy){
editedCellRange.setValue(Values[editedCellRange.getValue()-1]);
}
}
所以var Values
是一个包含应该显示的字符串值的数组。当编辑第4列中的单元格以包含整数时,脚本应查找数组中该整数位置的值,然后将相应的字符串放入已编辑的单元格中。任何人都可以告诉我我的脚本有什么问题(或者在脚本中写一个更好的方法)?
答案 0 :(得分:1)
首先,Values
是Range
个对象的数组。当你在做什么
editedCellRange.setValue(Values[editedCellRange.getValue()-1]);
您尝试将Range
对象传递给setValue
这是不正确的。所以,我会把它改成像这样的东西
var range = sheet.getRange("I2:I11");
var Values = range.getValues();
if(editedCell.getColumn() == columnToSortBy){
var number = parseInt(editedCellRange.getValue());
editedCellRange.setValue(Values[number -1][0]);
}