Как обновить и добавить значение ячейки в таблице Google с помощью скрипта Google Apps одновременно

#google-apps-script #google-sheets

Вопрос:

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

 function addItem(e){  var sheet = ss.getSheetByName('items');  var id = e.parameter.id;   var qty = e.parameter.qty;  var lc = sheet.getLastColumn();  var lr = sheet.getLastRow();  var data = sheet.getDataRange().getValues();  var old_date = data.pop()[0];  var new_date = e.parameter.date;  if (old_date != new_date) sheet.appendRow([new_date]);    SpreadsheetApp.flush();   for (var i = 1; i lt;= lc; i  ) {  for (var j = 1; j lt;= lr; j  ) {  var rid = sheet.getRange(1, i).getValue();  var red = sheet.getRange(j,1).getValue();  if (rid == id amp;amp; red == new_date){  sheet.getRange(j, i).setValue(qty);  }}}}  

Моя цель состоит в том , чтобы добавить строку new_date с помощью pop()[0] и appendRow , дождавшись ввода данных с помощью SpreadsheetApp.flush() , получить диапазон и значение new_date и id с шагом, проверяющим все строки и столбец, чтобы я мог вводить qty данные на основе id столбца и new_date строки.

как вы можете видеть на рисунке, new_date 11/11/1111 находится в (строка 3, столбец 1), в то id время как 1 находится в (строка 1, столбец 2), и мне нужно ввести qty (строка 3 и столбец 2). проблема, с которой я сталкиваюсь, заключается в том, что при запуске кода он не может обнаружить new_date то, что просто вводится, поэтому qty его нельзя вводить, потому что он думает, что new_date его там нет.

С чем я сталкиваюсь

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

1. Мне нужно было бы увидеть изображение листа, чтобы помочь вам.

2. @Cooper Я отредактировал его

3. Я не понимаю изображения, где хранится идентификатор?

4. @Copper id просто проверяется, не вводится, единственное, что вводится, — это просто date и qty . поэтому для ввода qty мне нужно проверить, правильно id это date или нет.

5. Я думаю, что одна вещь заключается в том, что вы не можете сравнивать объекты даты, вы можете сравнивать только новую дату().valueOf() или новую дату().getTime(). Оба возвращают миллисекунды и могут быть сопоставлены численно. На данный момент я все еще не могу понять, чего вы пытаетесь достичь.

Ответ №1:

Я просто разделяю функцию, и она отлично работает.

 function addDate(e){  var sheet = ss.getSheetByName('items');  var data = sheet.getDataRange().getValues();  var old_date = data.pop()[0];  var new_date = e.parameter.date;  if (old_date != new_date) sheet.appendRow([new_date]); }  function addItem(e){  var sheet = ss.getSheetByName('items');  var sku = e.parameter.sku;  var qty = e.parameter.qty;  var date = e.parameter.date;  var lc = sheet.getLastColumn();  var lr = sheet.getLastRow();  SpreadsheetApp.flush();  for (var i = 1; i lt;= lc; i  ) {  for (var j = 1; j lt;= lr; j  ) {  var rid = sheet.getRange(1, i).getValue();  var red = sheet.getRange(j,1).getValue();  if (rid == sku amp;amp; red == date){  sheet.getRange(j, i).setValue(qty);  var result = "Input Succeed";  }  }  } }