如何更改活动单元格的内容

时间:2013-09-17 14:20:44

标签: google-apps-script

在谷歌应用程序脚本中,我希望能够输入一个整数值(1-10),然后让脚本根据查找将输入该值的单元格更改为字符串。基本上就是这样:

enter image description here

这就是我所拥有的,但它从未做过任何事情。我甚至无法让单元格更改自己的文本值。

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列中的单元格以包含整数时,脚本应查找数组中该整数位置的值,然后将相应的字符串放入已编辑的单元格中。任何人都可以告诉我我的脚本有什么问题(或者在脚本中写一个更好的方法)?

1 个答案:

答案 0 :(得分:1)

首先,ValuesRange个对象的数组。当你在做什么

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]);
}