Google Sheets Trigger обновляет значения в таблице, но не оставляет старые значения без изменений - PullRequest
1 голос
/ 17 октября 2019

Я запрограммировал макрос в Google Sheets, который отображает таблицу для отображения истории определенных данных, которые меняются каждый день. Каждый день макрос вставляет в таблицу новую строку с новой датой. Это делается с помощью триггера. Проблема: Триггер также изменяет значения (я не имею в виду дату, которая работает нормально, я имею в виду значение, подобное 1,2,3,4,5,6) строки, созданной накануне. Таким образом, каждая строка содержит одинаковые данные, если значения изменяются. Тем не менее, я хотел бы отобразить историю данных. Так как я могу предотвратить это?

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

Прямо сейчас это выглядит так:

function zeitStempelPerTriggerSetzen(){ 
  var tabellenblatt=SpreadsheetApp.getActiveSheet();
  var aktuellerZeitpunkt=new Date(); 
  var zeitStempelFormat="dd.mm.yyyy hh:mm:ss";
  tabellenblatt.getRange(tabellenblatt.getLastRow()+1,15).setValue(aktuellerZeitpunkt).setNumberFormat(zeitStempelFormat);   
  tabellenblatt.getRange(tabellenblatt.getLastRow()+0,16).setFormula('=\' checklist\'!BG8'); 

Так, например, строка 1: 2019-10-16 значение равно 1 (это должно остаться 1, потому что я хочу видеть прогресс) Но когда я активирую триггер, он создает новую строку 2: 2019-10-17 значение теперь равно 2, но значение в строке 1 изменяется на2 тоже. И я хочу, чтобы значение в строке 1 оставалось равным 1. Как я могу предотвратить это?

Ответы [ 2 ]

0 голосов
/ 17 октября 2019

Если вы хотите заполнить столбец 16 фактическим значением в листе checklist, ячейку BG8 и не хотите, чтобы значения предыдущих строк в столбце 16 обновлялись при обновлении BG8 - не используйте формулы.

Вместо этого измените

  tabellenblatt.getRange(tabellenblatt.getLastRow()+0,16).setFormula('=\' checklist\'!BG8'); 

на

  var checklist=SpreadsheetApp.getActive().getSheetByName("checklist");
  var currentValue=checklist.getRange("BG8").getValue();
  tabellenblatt.getRange(tabellenblatt.getLastRow()+0,16).setValue(currentValue); 
0 голосов
/ 17 октября 2019

Предполагая, что вашему макросу присваивается значение =today(), вы можете обойти это, используя утилиту в app-scripts var today = Utilities.formatDate(new Date(), "dd/MM/yyyy").

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