Я боролся с этим часами.
У меня есть скрипт, который каждые 24 часа берет значение с другого листа и сохраняет его в ячейке. Так что мы можем поддерживать порядок...
нравиться
04.10.23 - 10
4.11.23 - 15
4.12.23 - 24
и т. д. и т. д.
Работает нормально .... однако проблема в том, что мой скрипт работает, вставляя формулу, а не результаты формулы. Так что на самом деле я получаю лист, который постоянно обновляется, например....
04.10.23 - 10
4.11.23 - 10
04.12.23 - 10
Кто-нибудь знает способ, с помощью которого вместо вставки формулы я могу вставить вывод формулы? Или даже способ скопировать результат и вставить его только как значение?
Мой сценарий здесь;
function addDate() {
var ss = SpreadsheetApp.getActiveSpreadsheet();
var sh = ss.getActiveSheet();
var tz = ss.getSpreadsheetTimeZone();
var d = Utilities.formatDate(new Date(), tz, 'yyyy-MM-dd');
sh.appendRow([d,'=COUNTIF(currentAffiliates!C:C,"Joined")','=COUNTIF(currentAffiliates!C:C,"Rejected")']);
}
Я считаю, что ваша цель заключается в следующем.
'=COUNTIF(currentAffiliates!C:C,"Joined")','=COUNTIF(currentAffiliates!C:C,"Rejected")'
.В таком случае, как насчет следующей модификации?
function addDate() {
var ss = SpreadsheetApp.getActiveSpreadsheet();
var sh = ss.getActiveSheet();
var tz = ss.getSpreadsheetTimeZone();
var d = Utilities.formatDate(new Date(), tz, 'yyyy-MM-dd');
// I modiifed the below script.
var { joined, rejected } = ss.getRange("'currentAffiliates'!C:C").getDisplayValues()
.reduce((o, [c]) => {
["joined", "rejected"].forEach(e => {
if (e == c.toLowerCase()) {
o[e]++
}
});
return o;
}, { joined: 0, rejected: 0 });
sh.appendRow([d, joined, rejected]);
}
Когда этот скрипт запускается, фактические значения добавляются вместо формул '=COUNTIF(currentAffiliates!C:C,"Joined")','=COUNTIF(currentAffiliates!C:C,"Rejected")'
на лист.
В этом случае я подумал, что можно было бы также использовать следующую модификацию.
От
var { joined, rejected } = ss.getRange("'currentAffiliates'!C:C").getDisplayValues()
.reduce((o, [c]) => {
["joined", "rejected"].forEach(e => {
if (e == c.toLowerCase()) {
o[e]++
}
});
return o;
}, { joined: 0, rejected: 0 });
К
var [joined, rejected] = ["joined", "rejected"].map(e => range.createTextFinder(e).matchCase(false).matchEntireCell(true).findAll().length);
Большое спасибо, это идеально и работает именно так, как нужно.