2

В настоящее время я пытаюсь автоматически архивировать ответы из формы Google. У меня есть скрипт, который запускается каждый раз при отправке формы и выполняет некоторую обработку последней отправки.
Что я хочу сделать, это первая подача месяца, создайте отдельную электронную таблицу с записями последних месяцев.
Я делаю это, получая дату с последнего месяца, создавая новую таблицу с именем и годом последнего месяца как имя файла.

Скрипты Google для копирования из одной таблицы в другую по дате

Что мне сейчас нужно сделать, это выбрать диапазон, основанный на датах. Таким образом, в столбце A есть отметка времени (например, 31/12/2012 22:21:31) - Я хотел бы выбрать все строки между, например, 1/12/2014 00:00:00 и 31/12/2014 23:59:59.

Используя этот example я знаю, его можно скопировать диапазон, но это найти правильный выбор, мне нужна помощь с:

var ss = SpreadsheetApp.getActiveSpreadsheet(); 
    var target = SpreadsheetApp.openById("0Aqv8....."); 
    var source_sheet = ss.getSheetByName("Form Responses"); 
    var target_sheet = target.getSheetByName("Sheet1"); 
    var source_range = source_sheet.getRange("A2:A"); 
    var target_range = target_sheet.getRange("A2:A"); 

    var values = source_range.getValues(); 
    target_range.setValues(values); 

Я использую следующие, чтобы получить время начала и время окончания месяца :

var x = new Date(); 
    var d = new Date(); 

    // Start Time: 
    x.setDate(1); 
    x.setHours(0); 
    x.setMinutes(0); 
    x.setSeconds(0); 
    x.setMonth(x.getMonth()-1); 

    // Finish Time: 
    d.setDate(0); 
    d.setHours(23); 
    d.setMinutes(59); 
    d.setSeconds(59); 

ответ

0

Ok так что это, вероятно, не самый лучший ответ, но эй, это, кажется, работает для меня:

var x = new Date(); 
var d = new Date(); 
// Start Time: 
x.setDate(1); 
x.setHours(0); 
x.setMinutes(0); 
x.setSeconds(0); 
x.setMonth(x.getMonth()-1); 
// Finish Time: 
d.setDate(0); 
d.setHours(23); 
d.setMinutes(59); 
d.setSeconds(59); 
// Create a blank spreadsheet: 
var root = DocsList.getRootFolder() 
var newFileId = SpreadsheetApp.create(archiveName).getId(); 
var newFile = DocsList.getFileById(newFileId); 
newFile.addToFolder(destFolder); 
newFile.removeFromFolder(root); 

// Get the spreadsheets: 
var ss = SpreadsheetApp.getActiveSpreadsheet(); 
var target = SpreadsheetApp.openById(newFileId); 
var sheet = ss.getSheetByName("Form Responses"); 
var target_sheet = target.getSheetByName("Sheet1"); 

// Record the range: 
var firstRow = 1; 
var lastRow = 1; 
var width = sheet.getDataRange().getWidth(); 

// Get all the current data: 
var numRows = sheet.getDataRange().getNumRows(); 
var data = sheet.getDataRange().getValues(); 

// Get the first entry: 
for(var i=0; i<numRows; i++){ 
    var tmp = new Date(data[i][0]); 
    if (tmp > x) { 
    firstRow = i+1; 
    Logger.log(i + " - is the first row"); 
    i = numRows; 
    } 
} 

// Get the last entry: 
for(var i=0; i<numRows; i++){ 
    var tmp = new Date(data[i][0]); 
    if (tmp > d) { 
    lastRow = i; 
    Logger.log(i + " - is the last row"); 
    i = numRows; 
    } 
} 

// Copy the title: 
var source_range = sheet.getRange(1,1,1,width); 
var target_range = target_sheet.getRange(1,1,1,width); 
var values = source_range.getValues(); 
var formats = source_range.getNumberFormats(); 
target_range.setValues(values); 
target_range.setNumberFormats(formats); 
target_sheet.setFrozenRows(1); 

// Copy the last months values: 
var source_range = sheet.getRange(firstRow,1,lastRow-firstRow+1,width); 
var target_range = target_sheet.getRange(2,1,lastRow-firstRow+1,width); 
var values = source_range.getValues(); 
target_range.setValues(values); 
Смежные вопросы