![](/img/trans.png)
[英]Copy columns from Sheet1 to Sheet2 & remote duplicates using Google App Script
[英]Google Script, how can I copy a row from Sheet1 to Sheet2 instead of just one cell by using regex?
这里经验丰富的编码员,我一直在研究一个正则表达式函数,该函数在成绩单中搜索关键字,然后在找到关键字时用成绩单填充电子表格。 但是,我只研究了如何仅使用包含转录本的一个单元格填充工作表,而我想填充包含转录本单元格以及其他包含 url、日期和时间等单元格的整行。
这是我的代码:
function regexwithsheetpop() {
var ss = SpreadsheetApp.getActiveSpreadsheet();
var historySheet = ss.getSheetByName('sheet1');
var resultsSheet = ss.getSheetByName('Results');
var totalRowsWithData = historySheet.getDataRange().getNumRows();
var data = historySheet.getRange(1, 2, totalRowsWithData).getValues();
var regexp = /\W*(identity)\W*\s+(\w+\s+){0,5}(verification)|(verification)\s+(\w+\s+){0,5}(identity)/i;
var result = [];
for (var i = 0; i < data.length; i += 1) {
var row = data[i];
var column = row[0];
if (regexp.exec(column) !== null) {
result.push(row); }}
if (result.length > 0) {
var resultsSheetDataRows = resultsSheet.getDataRange().getNumRows();
resultsSheetDataRows = resultsSheetDataRows === 1 ? resultsSheetDataRows : resultsSheetDataRows + 1;
var resultsSheetRange = resultsSheet.getRange(resultsSheetDataRows, 1, result.length);
resultsSheetRange.setValues(result);}}
因此,我在包含所有成绩单的“Sheet1”中的 B 列中搜索关键字。 如果找到关键字,regex 函数会用成绩单填充“结果”表。 如果在“Sheet1”的 B 列中找到关键字,正则表达式函数将“Sheet1”的 A、B 和 C 列填充到“结果”表中。
再次,非常有经验的编码员,因此任何简化或愚蠢的反馈都将不胜感激。 谢谢
欢迎! 你大部分时间都在那里。 要从“sheet1”中提取额外的列,您只需在getRange()
包含一个额外的参数即可获取所有 3 列(A、B、C):
var data = historySheet.getRange(1, 1, totalRowsWithData, 3).getValues()
请参阅getRange(row, column, numRows, numColumns)
。
然后调整您的 for 循环以匹配 B 列上的正则表达式,如果找到匹配results
则将整个row
数组推送到results
。
在此处详细了解多维范围输出: 如何在 Google Apps 脚本中将数据写入单个范围?
最后,为resultsSheetRange
的列数添加另一个参数。
function regexwithsheetpop() {
var ss = SpreadsheetApp.getActiveSpreadsheet()
var historySheet = ss.getSheetByName('sheet1')
var resultsSheet = ss.getSheetByName('Results')
var totalRowsWithData = historySheet.getDataRange().getNumRows()
var data = historySheet.getRange(1, 1, totalRowsWithData, 3).getValues()
var regexp = /\W*(identity)\W*\s+(\w+\s+){0,5}(verification)|(verification)\s+(\w+\s+){0,5}(identity)/i
var result = []
for (var i = 0; i < data.length; i += 1) {
var row = data[i]
var column = row[1]
if (regexp.exec(column) !== null) {
result.push(row)
}
}
if (result.length > 0) {
var resultsSheetDataRows = resultsSheet.getDataRange().getNumRows()
resultsSheetDataRows =
resultsSheetDataRows === 1
? resultsSheetDataRows
: resultsSheetDataRows + 1
var resultsSheetRange = resultsSheet.getRange(
resultsSheetDataRows,
1,
result.length,
3
)
resultsSheetRange.setValues(result)
}
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.