0

在谷歌应用程序脚本中,我希望能够输入一个整数值(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 列中的单元格被编辑为包含整数时,脚本应在数组中查找该整数位置的值,然后将适当的字符串放入已编辑的单元格中。谁能告诉我我的脚本有什么问题(或者在脚本中写这个更好的方法)?

4

1 回答 1

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]);
}
于 2013-09-17T15:56:29.167 回答