Как получить скрипт для добавления суммы 2-х переменных в 3-й столбец в Sheets - PullRequest
0 голосов
/ 03 июня 2018

У меня есть 2 отдельных скрипта, которые запрашивают у пользователя начальный пробег (введен в столбец 3) и конечный пробег (введен в столбец 4).Как я могу получить общее количество миль, введенных в столбец 10 после ввода конечного пробега?Я попытался ввести функцию на листе, но она перезаписывается при следующем вводе данных.

Мой скрипт 2 выглядит следующим образом:

var StartMileage =  SpreadsheetApp.getUi().prompt("Please enter Start Mileage.").getResponseText();

  var ss = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("Retrieval Log P1CU X")

  var NewLog = ss.getRange(ss.getLastRow(), 3).setValue( StartMileage );

и,

var Home =  SpreadsheetApp.getUi().prompt("What is your end mileage?").getResponseText();

  var ss = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("Retrieval Log P1CU X")

  var NewLog = ss.getRange(ss.getLastRow(), 4).setValue( Home );

Основная сумма, которую я хочу, это значение «Home» минус значение «StartM miles 'помещен в столбец 10.

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

function promptHome()
{
  var Home =  SpreadsheetApp.getUi().prompt("What is your end mileage?").getResponseText();

  var ss = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("Retrieval Log P1CU X")

  var NewLog = ss.getRange(ss.getLastRow(), 4).setValue( Home );

  var ss = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("Retrieval Log P1CU X")

  var NewLog = ss.getRange(ss.getLastRow(), 9).setValue( new Date() );
}

1 Ответ

0 голосов
/ 03 июня 2018

Добавьте код для вычисления и вставьте вычисленное значение в вашу функцию promptHome().И нет необходимости получать лист дважды, как вы сейчас делаете в своем коде.Вот как может выглядеть эта функция:

function promptHome() {
  var Home = SpreadsheetApp.getUi().prompt("What is your end mileage?").getResponseText();
  var ss = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("Retrieval Log P1CU X");
  var startMileage = parseInt(ss.getRange(ss.getLastRow(), 3).getValue(), 10);
  var diffMileage = parseInt(Home, 10)-startMileage;
  ss.getRange(ss.getLastRow(), 4).setValue(parseInt(Home, 10));
  ss.getRange(ss.getLastRow(), 9, 1, 2).setValues([[new Date(), diffMileage]]); // insert values into cols 9 and 10 at the same time, so save time
  SpreadsheetApp.flush(); // commit the changes
}

Конечно, она будет работать правильно, только если ваши пользователи будут вводить цифры только в ваших подсказках.Но если вы позволите им вводить то, что они хотят (например, «15mi» или «shamalamamumu») и не проверяют данные, у вас есть большие проблемы, чем не работающая функция :) Вам также следует использовать Служба блокировки в вашем коде для предотвращения одновременной записи данных.

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