Как насчет этой модификации?
Очки модификации:
- В случае
if (dataI = DateSearch)
, когда DateSearch
имеет значение, оно всегда работает как true
. Таким образом, скрипт, когда if
равен true
, работает каждый раз.
- Когда сравниваются 2 значения даты, сравните их, преобразовав в число.
- Это упомянуто из @ tehhowch
Модифицированный скрипт:
Чтобы отразить вышеуказанные пункты, измените их следующим образом и попробуйте снова. Первый и последний сравнивают время Unix и каждый год, месяц и день соответственно. Вы можете выбрать один из 2 образцов.
От:
if (dataI = DateSearch)
Для того, чтобы:
if (new Date(dataI).getTime() === new Date(DateSearch).getTime())
Или
Для того, чтобы:
if (new Date(dataI).getFullYear() === new Date(DateSearch).getFullYear() &&
new Date(dataI).getMonth() === new Date(DateSearch).getMonth() &&
new Date(dataI).getDate() === new Date(DateSearch).getDate())
Другие модификации:
Кстати, из вашего сценария и примера электронной таблицы считается, что когда количество данных становится большим, время обработки становится большим. Так как другая модификация для этой ситуации, как насчет этого? Но я не уверен, полезно ли это для вашей ситуации. Поэтому, пожалуйста, подумайте об этом, как пример сценария.
function search() {
var app=SpreadsheetApp;
var WorkSheet = app.getActiveSpreadsheet().getSheetByName("Sheet1");
WorkSheet.getRange("A2:D50").clearContent();
var DateSearch = WorkSheet.getRange(1,2).getValue();
var dataSheet = app.getActiveSpreadsheet().getSheetByName("Form Responses 1");
// Below script was modified.
var dataI = dataSheet.getDataRange().offset(1, 0).getValues();
var copyValue = dataI.map(function(e, i) {
return new Date(e[0]).getTime() === new Date(DateSearch).getTime() ? e : ["", ""];
});
WorkSheet.getRange(2,1,copyValue.length,copyValue[0].length).setValues(copyValue);
}
Рекомендации:
Если этот результат был не тем, что вы хотите, пожалуйста, скажите мне. Я хотел бы изменить его.
Добавлено:
Этот сценарий модификации помещает полученные значения без пустых строк в строку 2.
function search() {
var app=SpreadsheetApp;
var WorkSheet = app.getActiveSpreadsheet().getSheetByName("Sheet1");
WorkSheet.getRange("A2:D50").clearContent();
var DateSearch = WorkSheet.getRange(1,2).getValue();
var dataSheet = app.getActiveSpreadsheet().getSheetByName("Form Responses 1");
// Below script was modified.
var dataI = dataSheet.getDataRange().offset(1, 0).getValues();
var copyValue = dataI.filter(function(e) { // Modified
return new Date(e[0]).getTime() === new Date(DateSearch).getTime(); // Modified
});
WorkSheet.getRange(2,1,copyValue.length,copyValue[0].length).setValues(copyValue);
}