【发布时间】:2014-09-09 04:01:58
【问题描述】:
我一直在做这个项目,但不能让它完全按照我想要的方式工作。我刚开始使用 Google Scripts,对它的了解还不是很广。
只有当 sheet2 中不存在数据时,我才需要将数据从 master 复制到 sheet2 中。我只想对照两张纸检查提交日期列(现在)。
大师
提交日期
2014 年 9 月 3 日 10:37:04
2014 年 9 月 3 日 20:03:27
2014 年 9 月 4 日 0:47:14
2014 年 9 月 4 日 14:23:22
2014 年 9 月 4 日 14:31:49
2014 年 9 月 4 日 15:48:41
2014 年 9 月 4 日 15:55:16
2014 年 9 月 5 日 10:54:10
表 2
提交日期
2014 年 9 月 3 日 10:37:04
2014 年 9 月 3 日 20:03:27
我需要将 Master 中的最后 6 个提交日期复制到 Sheet2。我尝试了各种代码,这是我正在使用的最后一次迭代,部分来自这篇文章:Post
function updateSheet() {
var ss = SpreadsheetApp.getActiveSpreadsheet();
var sourceSheet = "Submissions";
var destinationSheet = "Applicant";
var source_sheet = ss.getSheetByName(sourceSheet);
var target_sheet = ss.getSheetByName(destinationSheet);
var lastCol = target_sheet.getLastColumn();
var lastRow = target_sheet.getLastRow();
//assumes headers in row 1
var r = target_sheet.getRange(2,1, lastRow - 1, lastCol);
//Note the use of an array
r.sort([{column: 1, ascending: true}]);
// Process sheet
_updateSpreadsheet(source_sheet, target_sheet);
}
function _updateSpreadsheet(source_sheet, target_sheet) {
var last_row = target_sheet.getLastRow();
var source_data = source_sheet.getDataRange().getValues();
var target_data = target_sheet.getDataRange().getValues();
var resultArray = [];
for (var n in source_data) {
var keep = true;
for(var p in target_data) {
if (source_data[n][0] == target_data[p][0]) {
keep = false; break;
}
}
// If no duplicate, add to sheet
if(keep){ resultArray.push(source_data[n])};
last_row++;
target_sheet.getRange("A"+last_row).setValue(source_data[n][0]);
target_data.push(n);
}
}
它不仅添加最后的记录,还添加所有记录。
显然我错过了一些东西,但我无法弄清楚。非常感谢任何帮助。
【问题讨论】:
标签: function google-apps-script google-sheets