Я не совсем уверен, что происходит в моем сценарии. Мой первый сценарий основан на событиях и перемещает данные с главной вкладки на вкладку CSV, которая по сути является промежуточной таблицей для 2-й и 3-й функции, которая создает файл .csv на моем диске Google. Обе функции onEdit(event)
и saveAsCSV()
работают сами по себе, но я действительно хочу вложить saveAsCSV()
в мою функцию onEdit(event)
так, чтобы csv. Файл сохраняется одновременно с созданием промежуточной таблицы. Любая идея, почему сценарий ниже не работает? Также я немного согласен со временем выполнения функций, так как мне нужно, чтобы часть onEdit(event)
закончила sh, создавая промежуточную таблицу, прежде чем она создаст CSV. файл. Любая помощь будет принята с благодарностью. Спасибо!
function onEdit(event) {
var ss = SpreadsheetApp.getActiveSpreadsheet();
var s = event.source.getActiveSheet();
var r = event.source.getActiveRange();
var loopLengthNumber = r.getValues();
for (var i=0; i < loopLengthNumber.length; i++) {
var row = r.getRow();
var numColumns = s.getLastColumn();
var targetSheet = ss.getSheetByName("CSV");
var target = targetSheet.getRange(targetSheet.getLastRow() + 1, 1);
s.getRange(row, 2, 1, numColumns).moveTo(target);
s.deleteRow(row);
}
s.insertRowsAfter(s.getLastRow(), loopLengthNumber.length);
saveAsCSV();
}
function saveAsCSV() {
var daTime = Utilities.formatDate(new Date(), "GMT+1", "MM/dd/yyyy");
var fileName = "Tasting7 Room "+ daTime;
if (fileName.length !== 0) {
fileName = fileName + ".csv";
var csvFile = convertRangeToCsvFile_(fileName);
DriveApp.createFile(fileName, csvFile, MimeType.CSV);
}
function convertRangeToCsvFile_(csvFileName) {
// Get the selected range in the spreadsheet
var ws = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("CSV").getDataRange();
try {
var data = ws.getValues();
var csvFile = undefined;
// Loop through the data in the range and build a string with the CSV data
if (data.length > 1) {
var csv = "";
for (var row = 0; row < data.length; row++) {
for (var col = 0; col < data[row].length; col++) {
if (data[row][col].toString().indexOf(",") != -1) {
data[row][col] = "\"" + data[row][col] + "\"";
}
}
// Join each row's columns
// Add a carriage return to end of each row, except for the last one
if (row < data.length-1) {
csv += data[row].join(",") + "\r\n";
}
else {
csv += data[row];
}
}
csvFile = csv;
}
return csvFile;
}
catch(err) {
Logger.log(err);
Browser.msgBox(err);
}
}
}