В моем листе (см. Пример ниже) я хотел бы собрать данные из столбца A, в котором есть ✓ в столбце M, и экспортировать их как текстовый файл. Когда я запускаю скрипт, я просто получаю пустой текстовый файл.
Ссылка на электронную таблицу: https://docs.google.com/spreadsheets/d/1G6pVruFl0PXHNRy6k3dftt6oIrzbdmOTQiJcWft7NPQ/edit?usp=sharing
Я думаю, что в цикле for номера столбцов верны. 12 для столбца M и 0 для столбца A.
Заметно: переменная var vA = rg.getValues();
не дает результатов для столбцов G, I, M. Кажется, что это проблема. С другой стороны, для столбца H переменная var vA = rg.getValues();
получает результаты ... Упомянутые столбцы содержат различные формулы.
Это формула из столбца G, для которой переменная не дает результатов: = IF (C8 = "", "", VLOOKUP (A8, GoogleFinance! $ B $ 3: $ E $ 1214,4, FALSE)))
Это формула из столбца H, для которой переменная получает результаты: = IFERROR (IF (D8 = "", "", GOOGLEFINANCE (A8, $ H $ 1)), "")
См. Ниже массив для строки 14, которая фактически выполняет условия экспорта:
["CPRT", "Copart, Inc.", (новая дата (1574031600000)), (новая дата (1574118000000)), 3, (новая дата (1574204400000)), "", 86.38, "", 84.92, 19731501254, 19982000000, ""]
А вот скриншот с результатами отладки Что я делаю не так?
function ExportEarningsTrades (filename) {
var date = new Date();
var tsmp = Utilities.formatDate(date, "Europe/Berlin", "dd-MM-yyyy_HH-mm-ss")
var ss = SpreadsheetApp.getActiveSpreadsheet();
var sh = ss.getSheetByName('Ergebnisse');
var rg = sh.getRange(8,1,sh.getLastRow(),sh.getLastColumn());
var vA = rg.getValues();
var St = "✓";
var filename = 'E-Trade'+' - '+tsmp+'.txt';
var txt = "";
for(var i=0;i<vA.length;i++) {
if(vA[i][12]==St) {
txt+=Utilities.formatString('%s,',A[i][0]);
}
}
var file=DriveApp.createFile(filename,txt,MimeType.CSV);
}