Не могу понять, как изменить выбранную ячейку в скрипте Google Apps

#google-apps-script #google-sheets

Вопрос:

У меня есть следующий сценарий:

 function onSelectionChange(e) {
 const sheet = SpreadsheetApp.getActiveSheet();
  const resultA1Notation = "D2"; // Change
  const range = e.range;
  const selectedValue = range.getValue();
  if (selectedValue === "UPGRADE") {
    let numberValue = range.offset(0, -1).getValue();
    if (numberValue !== "Free") {
      numberValue = numberValue.slice(0, -1); // Remove P
      const resultCell = sheet.getRange(resultA1Notation);
      resultCell.setValue(resultCell.getValue() - numberValue);
      sheet.range.offset(0, -1).getValue();
      resultCell.setValue(resultCell.getValue()   15);
    }
  }
}
 

Я не могу заставить его работать до конца. Я пытаюсь изменить эти две строки:

 sheet.range.offset(0, -1).getValue();
resultCell.setValue(resultCell.getValue()   15);
 

Я пытаюсь заставить скрипт смещать ячейку на -1, например, если это B1, она перейдет в A1. Любая помощь, которую он оценил, спасибо!

Комментарии:

1. В чем заключается проблема, с которой вы сталкиваетесь? Кроме того, можете ли вы поделиться копией листа?

Ответ №1:

Я считаю, что ваша цель заключается в следующем.

  • Вы хотите активировать одну левую боковую ячейку для текущей ячейки, когда значение выбранной ячейки UPGRADE равно, а значение одной левой боковой ячейки для текущей выбранной ячейки-нет Free .
    • В качестве примера ситуации, когда выбрана ячейка «B1», вы хотите выбрать ячейку «A1».
  • Вы хотите изменить следующую часть своего сценария.
       sheet.range.offset(0, -1).getValue();
      resultCell.setValue(resultCell.getValue()   15);
     

В этом случае, чтобы выбрать ячейку, я думаю, что activate этот метод можно использовать. Когда ваш сценарий изменяется, он становится следующим.

От:

 sheet.range.offset(0, -1).getValue();
resultCell.setValue(resultCell.getValue()   15);
 

Для:

 if (range.columnStart > 1) {
  range.offset(0, -1).activate();
}
 
  • Когда выбран столбец «А», range.offset(0, -1) возникает ошибка. Поэтому я использовал утверждение if if (range.columnStart > 1){} .

Ссылка:

Комментарии:

1. Я попытался поэкспериментировать с предоставленным сценарием и изменил его на » диапазон.смещение(0, -3).активировать(); resultCell.setValue(resultCell.GetValue() 15)», но затем вторая строка, которую я пытаюсь изменить, не работает.