В Google Sheets: скрипт для добавления или вычитания значения из нескольких строк одним нажатием кнопки - PullRequest
0 голосов
/ 29 января 2020

Я пытаюсь добавить кнопки в несколько строк, которые бы добавляли или вычитали значение из указанной строки. Вот изображение, чтобы показать вам, что я хочу сделать.

Строки с кнопками плюс и вычеты

Я достиг этого сценария:

function plusB1() {
  ss=SpreadsheetApp.getActiveSpreadsheet()
  s=ss.getActiveSheet()
  var currVal=s.getRange("B1").getValue()
  var plusVal= currVal +1
  s.getRange("B1") .setValue(plusVal)
}

function minusB1() {
  ss=SpreadsheetApp.getActiveSpreadsheet()
  s=ss.getActiveSheet()
  var currVal=s.getRange("B1").getValue()
  var minusVal= currVal -1
  s.getRange("B1") .setValue(minusVal)
}

Который делает то, что я хочу, кроме только в первом ряду. Я мог бы повторить создание пользовательских функций для каждой строки, но это кажется мне очень неэффективным. Есть ли способ иметь пару функций, которые собирают информацию о том, в какой строке была нажата эта кнопка?

Ответы [ 2 ]

0 голосов
/ 31 января 2020

Сложение и вычитание

function onEdit(e) {
  e.source.toast('Entry');
  var sh=e.range.getSheet();
  if(sh.getName()=='Sheet233' && e.range.columnStart==3) {
    e.source.toast("incr");
    e.range.setValue("FALSE");
    e.range.offset(0,-1).setValue(e.range.offset(0,-1).getValue() + 1);
  }
  if(sh.getName()=='Sheet233' && e.range.columnStart==4) {
    e.source.toast('decr');
    e.range.setValue("FALSE");
    e.range.offset(0,-2).setValue(e.range.offset(0,-2).getValue() - 1);
  }
}

Анимация:

enter image description here

0 голосов
/ 29 января 2020

Ты не можешь. Это не очень хорошая идея для Google Sheets and Scripts.

Поскольку вы не можете передать параметр или проверить, какая кнопка была нажата.

Если вы продолжите, вам нужно будет создать 10 методов, которые бы вызов для каждой кнопки с различными параметрами внутри.

function plus(range) {
  ss=SpreadsheetApp.getActiveSpreadsheet()
  s=ss.getActiveSheet()
  var currVal=s.getRange(range).getValue()
  var plusVal= currVal +1
  s.getRange(range) .setValue(plusVal)
}

function minus(range) {
  ss=SpreadsheetApp.getActiveSpreadsheet()
  s=ss.getActiveSheet()
  var currVal=s.getRange(range).getValue()
  var minusVal= currVal -1
  s.getRange(range) .setValue(minusVal)
}

function plusA(){
  plus("A")
}

function minusA(){
  plus("A")
}

et c ...

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...