это ошибка в электронной таблице скриптов Google AppsApp Range.copyTo - PullRequest
1 голос
/ 08 июня 2019

Я пытаюсь установить значение ячейки на =now(), а затем скопировать / вставить только значение обратно.Если я устанавливаю значение ячейки с помощью Sheet.appendRow(), это работает, но если я использую Range.setValue() или Range.setFormula(), это не так.

Это работает :

// add a new row
SpreadsheetApp.getActiveSheet().appendRow(["=now()"]);

// copy it and paste just the value back into the same cell
SpreadsheetApp.getActiveSheet().getRange(1, 1).copyTo(SpreadsheetApp.getActiveSheet().getRange(1, 1), SpreadsheetApp.CopyPasteType.PASTE_VALUES, false);

Этот не работает:

// set A1 to now
SpreadsheetApp.getActiveSheet().getRange(1, 1).setValue("=now()");

// copy it and paste just the value back into the same cell
SpreadsheetApp.getActiveSheet().getRange(1, 1).copyTo(SpreadsheetApp.getActiveSheet().getRange(1, 1), SpreadsheetApp.CopyPasteType.PASTE_VALUES, false);

Второй, кажется, опустошает ячейку.

Не уверен, что я делаю что-то не так или это не такошибка?

1 Ответ

3 голосов
/ 08 июня 2019

Как насчет использования SpreadsheetApp.flush() для второго скрипта, как показано ниже?

Модифицированный скрипт:

// set A1 to now
SpreadsheetApp.getActiveSheet().getRange(1, 1).setValue("=now()");

SpreadsheetApp.flush(); // Added

// copy it and paste just the value back into the same cell
SpreadsheetApp.getActiveSheet().getRange(1, 1).copyTo(SpreadsheetApp.getActiveSheet().getRange(1, 1), SpreadsheetApp.CopyPasteType.PASTE_VALUES, false);

Примечание:

  • Хотя это мое предположение, Я думаю, что действие appendRow() может быть таким же, как и в случае, когда электронная таблица используется извне.

Ссылка

Если я неправильно понял ваш вопрос, и это был не тот результат, которого вы хотите, прошу прощения.

...