Ani*_*Ani 12 javascript google-sheets google-apps-script
您好我想使用谷歌应用脚本将一个电子表格中的特定行复制到另一个电子表格.任何人都可以帮我解决这个问题.
Kei*_*ley 20
查看此处的文档:
http://code.google.com/googleapps/appsscript/service_spreadsheet.html
假设您正在复制的电子表格中工作.
您必须获得当前电子表格和目标电子表格的句柄.您需要获取目标电子表格的ID.细节在那里的链接.
var ss = SpreadsheetApp.getActiveSpreadsheet();
var target = SpreadsheetApp.openById("abc1234567");
Run Code Online (Sandbox Code Playgroud)
接下来,我们需要选择这些电子表格中的特定工作表.假设您的行位于名为"New Stuff"的工作表上,并且您在目标电子表格中有一个名为"Archive"的工作表.
var source_sheet = ss.getSheetByName("New Stuff");
var target_sheet = target.getSheetByName("Archive");
Run Code Online (Sandbox Code Playgroud)
现在,谷歌应用程序电子表格使用的概念是范围.范围只是一大块细胞.所以我们需要确定范围和范围.假设您的工作表有7列,您想要第10行.
var source_range = source_sheet.getRange("A10:G10");
var target_range = target_sheet.getRange("A1:G1");
Run Code Online (Sandbox Code Playgroud)
所以我们将把那一行放在目标表的第一行.现在为实际副本:
source_range.copyTo(target_range);
Run Code Online (Sandbox Code Playgroud)
而且你已经完成了!
现在,这将始终破坏目标表的第一行.你可以做很多事来阻止它.您可以使用工作表对象方法查找最后一行,然后添加一行,然后将其用作范围,而不是始终使用第一行.
var last_row = target_sheet.getLastRow();
target_sheet.insertRowAfter(last_row);
var target_range = target_sheet.getRange("A"+(last_row+1)+":G"+(last_row+1));
Run Code Online (Sandbox Code Playgroud)
这样每次复制一行时,它就会被添加到工作表的底部.
小智 17
该copyTo方法记录很少,因为它不允许您将内容复制到另一个电子表格中的工作表.
您可能想要使用如下的getValuesans setValues:
function CopyDataToNewFile() {
var sss = SpreadsheetApp.openById('0AjN7uZG....'); // sss = source spreadsheet
var ss = sss.getSheetByName('Monthly'); // ss = source sheet
//Get full range of data
var SRange = ss.getDataRange();
//get A1 notation identifying the range
var A1Range = SRange.getA1Notation();
//get the data values in range
var SData = SRange.getValues();
var tss = SpreadsheetApp.openById('8AjN7u....'); // tss = target spreadsheet
var ts = tss.getSheetByName('RAWData'); // ts = target sheet
//set the target range to the values of the source data
ts.getRange(A1Range).setValues(SData);
}
Run Code Online (Sandbox Code Playgroud)
我也碰到了这个.我设法找到一个很好的解决方法,将所有内容从一张纸复制到另一张(除了图像,图形,脚本和东西).它肯定会复制公式,值,格式化.
基本上解决方案是
码:
var sss = SpreadsheetApp.openById(spreadsheet); // sss = source spreadsheet
var ss = sss.getSheetByName(sheet); // ss = source sheet
var ss_temp = ss.copyTo(targetsheet);
var tss = SpreadsheetApp.openById(spreadsheet); // tss = target spreadsheet
var ts = tss.getSheetByName(sheet); // ts = target sheet
var range2Copy = ss_temp.getRange(range);
range2Copy.copyTo(ts.getRange(range));
bss.setActiveSheet(ss_temp);
bss.deleteActiveSheet()
Run Code Online (Sandbox Code Playgroud)
基于上述内容,我创建了一个电子表格,允许我从主电子表格更新许多副本.大约有15个副本,它可以节省大量的复制粘贴操作.
| 归档时间: |
|
| 查看次数: |
68898 次 |
| 最近记录: |