根据同一行中另一个单元格的值设置值

时间:2019-04-15 15:14:58

标签: google-apps-script google-sheets

编写Google脚本的新手。找到了类似的问题,但没有找到可以解决的答案。我希望将同一行的“ G”列中的单元格编辑为“ y”时,将工作表“ main”上给定行的“ H”列中的单元格值设置为“ Y”。我不能为此使用公式,因为删除“ G”中的值后,我需要保留“ H”中的值。我正在使用的当前代码如下。不返回任何错误,但也不会更改工作表中的任何内容。它不是写为onEdit,因为我正在使用一个单独的onEdit函数来调用多个函数(正确时包括此函数)。

function myFunction3() {

var ss = SpreadsheetApp.getActiveSpreadsheet();
var sheet = ss.getSheetByName("main");
var range = sheet.getActiveCell();
var columnNumberToWatch = 7; // column A = 1, B = 2, etc.
var valueToWatch = "y";
var right = range.offset(0,1);

if (range.getColumn() == columnNumberToWatch && range.getValue() == 
valueToWatch) { 
sheet.getRange(right).setValue('Y');
}
}

2 个答案:

答案 0 :(得分:0)

在您的描述中,您似乎在说,如果G列中的值为“ y”,那么您希望使“ H”列中的值等于“ Y”。范围= activeCell(),列号为7,valueToWatch =“ y”。

因此,您需要做的是获取范围内的值(例如,活动单元格),并将其旁边的单元格中的值更改为“ Y”。

因此,您的条件语句需要从要测试的内容开始(例如range.getValue(),如果该值在columnToWatch中,则将其旁边的列中的值设置为“ Y”。

要做的第一件事是获取活动单元格的列号。

尝试range.getColumn()并将其分配给新变量(即activeColumnNumber)

然后从range.getValue()开始if语句。

如果(range.getValue =='y'&& activeColumnNumber == 7)等等,它应该可以工作。

答案 1 :(得分:0)

尝试一下-

function myFunction3() {
  var ss = SpreadsheetApp.getActiveSpreadsheet();
  var sheet = ss.getSheetByName('main');
  var range = sheet.getActiveCell();
  var columnNumberToWatch = 7; // column A = 1, B = 2, etc.
  var valueToWatch = 'y';

  if (range.getColumn() == columnNumberToWatch && range.getValue() == valueToWatch) {
    range.offset(0, 1).setValue('Y');
  }
}
相关问题