Google apps script Google脚本将数据从一个工作表传输到另一个工作表
我希望有人能帮我写一个谷歌脚本,用在谷歌表单上,除非它可以用标准的公式字符串完成 我希望脚本在Sheet1的指定列中搜索特定的文本值,如果找到文本值,则该行的数据将传输到第一个可用空行中的Sheet2。然后,将数据传输到图纸2后,删除包含图纸1中数据的行 *注意,表2的页眉比表1的页眉少。我只想从sheet1中获取与sheet2标题相同的数据 这是一个示例工作簿。如果F列中的文本丢失,则将该行的数据传输到sheet2中,但仅传输与sheet2中标题相关的数据 我不熟悉脚本和VBA,如果有人愿意提供帮助,我将不胜感激 提前非常感谢 -杰西查找、移动和删除 txt是要搜索的文本 col是要搜索的列名Google apps script Google脚本将数据从一个工作表传输到另一个工作表,google-apps-script,data-transfer,Google Apps Script,Data Transfer,我希望有人能帮我写一个谷歌脚本,用在谷歌表单上,除非它可以用标准的公式字符串完成 我希望脚本在Sheet1的指定列中搜索特定的文本值,如果找到文本值,则该行的数据将传输到第一个可用空行中的Sheet2。然后,将数据传输到图纸2后,删除包含图纸1中数据的行 *注意,表2的页眉比表1的页眉少。我只想从sheet1中获取与sheet2标题相同的数据 这是一个示例工作簿。如果F列中的文本丢失,则将该行的数据传输到sheet2中,但仅传输与sheet2中标题相关的数据 我不熟悉脚本和VBA,如果有人愿意提
function findMoveDelete(txt,col) {
var txt=txt||'Hoover';//search text
var col=col||'Location';//column name
var ss=SpreadsheetApp.getActive();
var sh=ss.getSheetByName('Sheet1');
var dsh=ss.getSheetByName('Sheet2');
var dHdrToIdx={dhA:[]};
dHdrToIdx.dhA=dsh.getRange(1,1,1,dsh.getLastColumn()).getValues()[0];
dHdrToIdx.dhA.forEach(function(hdr,i){dHdrToIdx[hdr]=i;});
var rg=sh.getRange(2,1,sh.getLastRow()-1,sh.getLastColumn());
var sHdrToIdx={shA:[]};
sHdrToIdx.shA=sh.getRange(1,1,1,sh.getLastColumn()).getValues()[0];
sHdrToIdx.shA.forEach(function(hdr,i){sHdrToIdx[hdr]=i;});
var vA=rg.getValues();
var d=0;
for(var i=0;i<vA.length;i++) {
//Find
if(vA[i][sHdrToIdx[col]]==txt) {
var row=[];
dHdrToIdx.dhA.forEach(function(dhdr,j){
row.push(vA[i][sHdrToIdx[dHdrToIdx.dhA[j]]]);
});
dsh.appendRow(row);//Move
sh.deleteRow(i+2-d++);//Delete
}
}
}
运行后的第1页和第2页:
表1和表2中的标题必须相同。您可以按自己喜欢的顺序排列,但两张纸的顺序必须相同。非常感谢Cooper!我运行了脚本,它几乎适合我。它会找到指定的txt并完美地删除整行!但是,它不会将该行移动到图纸2。你能告诉我吗?我刚刚用你的数据试过了,它对我很有效。你把列标题放在第2页的第一行了吗。他们需要像你的例子中一样在那里。不要以任何方式更改名称,因为代码也必须更改。事实上,更改名称是可以的,只要它们在sheet1和sheet2上是相同的。如果您没有得到任何信息,可能是因为他们找不到合适的列来放置它们,因为要么是名称不存在,要么是您更改了它们。Cooper,我不确定,但我一定是做错了什么。今天早上我又试了一次,结果我犯了几个错误,但现在它工作得很好。非常感谢你!!!