Что мне нужно изменить в Моем Скрипте, чтобы Добавить столбец A в столбец B, Возвращая ответ в столбце B Каждый раз, когда Я нажимаю кнопку, чтобы добавить их?

#javascript #java #google-apps-script #google-sheets

Вопрос:

Я совершенно новичок в java и написании сценариев в Google Таблицах, и это мой первый вопрос здесь, так что любые советы по этикету приветствуются.

Я так многому научился на этом сайте, но я застрял на этой простой ошибке уже несколько недель и, наконец, просто должен спросить, так как я нигде не могу найти решение.

ОТРЕДАКТИРУЙТЕ, чтобы, Надеюсь, быть более ясным

У меня есть лист с ценами в столбце «U» с формулами в столбцах «V» и «W», которые изменяются в соответствии со значением в «U». Я создал кнопку и прикрепил сценарий, который я хотел бы, чтобы он добавлял значение каждой ячейки в V к значению в W одной и той же строки на одну итерацию каждый раз, когда я выбираю кнопку, и возвращал новые значения в одну и ту же ячейку столбца W.

Примерный лист

Я перепробовал множество вариантов сценариев, которые давали разные результаты, но ни один из них не был просто сложен из этих двух столбцов вместе. Ниже приведено то, что я собрал вместе, что почти делает именно то, что мне нужно, но его нужно где-то подправить, и я не могу этого понять.

 function testPlus10(){  var colV = SpreadsheetApp.getActiveSheet().getRange("V2:V100").getValue();  var cell = SpreadsheetApp.getActiveSheet().getRange("W2:W100");  var cellValues = cell.getValues().map(function(row) {return [row[0]   colV]});  cell.setValues(cellValues); }  

Вместо добавления значения в (из приведенного выше примера) V2 в W2, V3 в W3 и т. Д. В столбце Он добавляет значение V2 только в каждую ячейку в W. Это означает, что из примера: мой текущий скрипт возвращает значения V2 W2 в W2, V2 W3 в W3, V2 W4 в W4, вместо V2 W2 в W2, V3 W3 в W3, V4 W4 в W4 и т. Д… Это добавляет 1 доллар к каждой ячейке в W.

Надеюсь, в этом больше смысла.

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

1. @Купер, извините за путаницу. В моем примере первая ячейка-U2, и это равно стоимости чего-то. V2-это 10% — ная маржа от этой стоимости, которая не будет отображаться в окончательном листе, а W2-это 40% — ная наценка на стоимость в U2. Поэтому я просто хочу, чтобы скрипт добавил значение в V2 (иначе 10% — ная маржа) к отмеченной цене в W2. Пример сценария, который я опубликовал, сделал это, но затем он добавил 1 доллар из V2 в каждую ячейку в W, что означает V2 W2, V2 W3, V2 W4, вместо V2 W2, V3 W3, V4 W4 и вниз по остальным столбцам.

2. Все в порядке. Я рад, что Родриго догадался об этом. Честно говоря, меня не волнуют очки. Я просто пытался помочь тебе.

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

Ответ №1:

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

введите описание изображения здесь

 function sumColumns(){  var spreadsheet = SpreadsheetApp.getActive();  var currentRow = spreadsheet.getDataRange().getLastRow(); //Get the last row with value on your sheet data as a whole to only scan rows with values  for(var x =2; xlt;=currentRow; x  ){ //Loop starts at row 2  if(spreadsheet.getRange("V" x).getValue() == ""){ //Checks if V (row# or x) value is null  Logger.log("Cell V" x " is empty"); //Logs the result for review  }  else{  var res = spreadsheet.getRange("V" x).getValue()   spreadsheet.getRange("W" x).getValue(); //SUM of V amp; W values  spreadsheet.getRange("W" x).setValue(res); //Replace W value with "res"  }  } }