![](/img/trans.png)
[英]Copy filtered range from one spreadsheet to another - Google app script
[英]Google scripts copy range from one spreadsheet to another based on date
我目前正在嘗試自動存檔Google表單中的回復。 我有一個腳本,該腳本在每次提交表單時運行,並對上一次提交進行一些處理。
我想做的是在該月的第一次提交時,創建一個僅包含最近幾個月條目的單獨電子表格。
我這樣做是通過獲取上個月的日期,並以文件的最后幾個月的名稱和年份創建一個新的電子表格。
我現在需要做的是根據日期選擇一個范圍。 因此,在A列中是一個時間戳記(例如31/12/2014 22:21:31) -我想選擇2014年1月12 日00:00:00和2014年12月31日23:59之間的所有行:59 。
使用此示例,我知道可以復制范圍,但是正在尋找我需要幫助的正確范圍:
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);
好的,所以這可能不是最佳答案,但是嘿,它似乎對我有用:
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);
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.