![](/img/trans.png)
[英]To copy Cell values from a range and paste it in a single row of another sheet
[英]Script for copy range from a sheet onto another, delete copied range and paste new formulas from a third sheet
我正在嘗試開發腳本來在Google電子表格上執行以下操作:
1)在電子表格1的Tab Source1上復制范圍B3:K102。
2)將復制的范圍(作為值)粘貼到電子表格2上Tab Destination1的最后一個可用行上。
3)清除電子表格1上的范圍B3:K102。
4)在標簽'Source2'電子表格1上復制范圍C3:K102。
5)將復制的范圍從“ Source2”粘貼到“ Source1!B3:K102”(作為公式)。
以下是即時消息正在嘗試並且無法使其正常運行的腳本。 請幫忙!
請注意,我對Im所做的工作幾乎一無所知,我是從一個知道一點點的朋友那里得到這個腳本的,但是他不再能夠幫助我。 因此,如果有人可以通過糾正錯誤並添加所缺少的內容來幫助我,我將不勝感激,如果您可以粘貼整個最終腳本,那么我不會把它弄亂。
非常感謝!
function Copy() {
var sss = SpreadsheetApp.openById('19BsivpPDO8ov3tHXslCzNQi0cB8YeP1gQ-5Zt-4Eb64');
var ss = sss.getSheetByName('Source1');
var range = ss.getRange('B3:K102');
var data = range.getValues();
var tss = SpreadsheetApp.openById('1tVnIMNQ7oE8YuxLU2KpBSL-Py3T8IqJwV6j59Pfo3j0');
var ts = tss.getSheetByName('Destination1');
var endOfFile = ts.getLastRow();
var cantColumns = 10;
for (var i = 0; i < cantColumns; i++) {
endOfFile = endOfFile + 1
for (var cont = 1; cont < ss.getLastColumn(); cont++) {
ts.getRange(endOfFile, cont + 1).setValue(data[i][cont -1]);
}
}
range.clearContent();
var sss = SpreadsheetApp.openById('19BsivpPDO8ov3tHXslCzNQi0cB8YeP1gQ-5Zt-4Eb64');
var ss = sss.getSheetByName(‘Source2’);
var range = ss.getRange(‘C3:K102’);
var data = range.getValues();
var tss = SpreadsheetApp.openById('19BsivpPDO8ov3tHXslCzNQi0cB8YeP1gQ-5Zt-4Eb64');
var ts = tss.getSheetByName(‘Source1’);
var endOfFile = ts.getLastRow();
var cantColumns = 9;
for (var i = 0; i < cantColumns; i++) {
endOfFile = endOfFile + 1
// Recorremos la fila y vamos insertando los valores
for (var cont = 1; cont < ss.getLastColumn(); cont++) {
ts.getRange(endOfFile, cont + 1).setValue(data[i][cont -1]);
}
由於我看不到您的樣本表,因此該樣本腳本可能不是您想要的。 因此,如果這不是您想要的,請隨時告訴我。
將許多數據導入單元格時,“ setValues()”比“ setValue()”更快。 https://developers.google.com/apps-script/reference/spreadsheet/range#setValues(Object)
“ getValues()”可以檢索單元格的值。 “ getFormulas()”可以檢索單元格的公式。 在此示例中,將同時檢索值和公式並將其從Source2復制到Source1。
要從Source2復制到Source1,您要將數據復制到Source1的最后一行還是復制到“ B3:K102”? 在當前示例中,它是Source1的最后一行,就像您的腳本一樣。 如果Source1除“ B3:K102”外具有其他單元格(少於102個),則Source2中的公式可能不適用於Source1。
示例腳本:
function Copy() {
var srcs = '19BsivpPDO8ov3tHXslCzNQi0cB8YeP1gQ-5Zt-4Eb64';
var dest = '1tVnIMNQ7oE8YuxLU2KpBSL-Py3T8IqJwV6j59Pfo3j0';
var srcs_ss = SpreadsheetApp.openById(srcs);
var dest_ss = SpreadsheetApp.openById(dest);
var src1 = srcs_ss.getSheetByName('Source1');
var src2 = srcs_ss.getSheetByName('Source2');
var dest = dest_ss.getSheetByName('Destination1');
var src1_range = src1.getRange('B3:K102');
var src1_f = src1_range.getFormulas();
var src1_dat = src1_range.getValues();
src1_f.forEach(function(e1, i1){
e1.forEach(function(e2, i2){
if (e2 != "") src1_dat[i1][i2] = e2;
});
});
src1_range.clearContent();
dest.getRange(dest.getLastRow(), 2, src1_dat.length, src1_dat[0].length).setValues(src1_dat);
var src2_dat = src2.getRange('C3:K102').getValues();
src1.getRange(src1.getLastRow(), 2, src2_dat.length, src2_dat[0].length).setValues(src2_dat);
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.