将一个 sheet 复制到同一文件夹中的许多其他传播 sheet
Copy one sheet to many others spreadsheets at the same folder
我在一个文件夹中有很多 spreadsheets,今天我在其中一个 spreadsheets 中开发了一个新的 sheet(标签)。我有一个代码可以将一个 sheet 复制并粘贴到另一个传播sheet,但是为此还有另一种没有代码的方法。
我的目标是:
- 一种将一个 sheet(订单号 13)复制到同一文件夹中的所有其他跨页sheet的方法。
这是我一对一复制的代码:
function sendspreadsheet(){
var source = SpreadsheetApp.getActiveSpreadsheet();
var aba = source.getSheets()[13];
var destination = SpreadsheetApp.openByUrl('https:sheetID');
aba.copyTo(destination);}
@Tanaike 在 post 上就类似问题提供了很大的帮助: 我研究了这段代码和 Google Class Sheet , 但有些东西不工作。
我正在尝试在同一文件夹中复制一对多传播sheet的代码:
Function sendtomultiple(){
var source = SpreadsheetApp.getActiveSpreadsheet();
var aba = source.getSheets()[13];
var destination = DriveApp.getFolderById('1o6p-53Q1ntJAVIJt9w4k0UK___XXXXXX');
var sheetDestino = destination.getFilesByType(MimeType.GOOGLE_SHEETS);
while (sheetDestino.hasNext()) {
SpreadsheetApp.open(sheetDestino.next()).getSheets().forEach(aba => {
aba.copyTo(sheetDestino);
});
};
}
我猜 while 指令中的这一行是问题所在,我尝试了其他选项,但都是 return 错误消息,请输入:
Exception: The parameters (DriveApp.FileIterator) don't match the method signature for SpreadsheetApp.Sheet.copyTo.
希望有人能帮助解决这个问题。
解释/问题:
您的目标是将特定的 sheet(制表符)复制到同一文件夹内的多个跨页sheet中。
这个问题与 sheetDestino.next()
是一个 file object but copyTo(spreadsheet) accepts a spreadsheet 对象有关。
您可以get the id of the file and then use openById(id)获取传播sheet对象,您可以使用该对象将sheet复制到。
红利代码:
我添加了一个 if
条件以确保代码不会尝试将 sheet 复制到原始传播 sheet 文件。
我加了一段代码,把复制的sheet到目的地sheet重命名为原来的名字。默认值为 copy of Sheet14..
.
解决方案:
function sendtomultiple(){
const source = SpreadsheetApp.getActiveSpreadsheet();
const source_id = source.getId();
const aba = source.getSheets()[13];
const destination = DriveApp.getFolderById('1o6p-53Q1ntJAVIJt9w4k0UK___XXXXXX');
const sheetDestino = destination.getFilesByType(MimeType.GOOGLE_SHEETS);
while (sheetDestino.hasNext()) {
let target_file = sheetDestino.next();
let target_id = target_file.getId();
let target_ss = SpreadsheetApp.openById(target_id);
if(target_id!=source_id){
aba.copyTo(target_ss).setName(aba.getName());
}
};
}
请记住,sheet getSheets()[13]
是 spreadsheet 文件中的第 14 个 sheet。如果你想获得第 13 个 sheet 你需要使用 getSheets()[12]
.
我在一个文件夹中有很多 spreadsheets,今天我在其中一个 spreadsheets 中开发了一个新的 sheet(标签)。我有一个代码可以将一个 sheet 复制并粘贴到另一个传播sheet,但是为此还有另一种没有代码的方法。
我的目标是:
- 一种将一个 sheet(订单号 13)复制到同一文件夹中的所有其他跨页sheet的方法。
这是我一对一复制的代码:
function sendspreadsheet(){
var source = SpreadsheetApp.getActiveSpreadsheet();
var aba = source.getSheets()[13];
var destination = SpreadsheetApp.openByUrl('https:sheetID');
aba.copyTo(destination);}
@Tanaike 在 post 上就类似问题提供了很大的帮助:
我正在尝试在同一文件夹中复制一对多传播sheet的代码:
Function sendtomultiple(){
var source = SpreadsheetApp.getActiveSpreadsheet();
var aba = source.getSheets()[13];
var destination = DriveApp.getFolderById('1o6p-53Q1ntJAVIJt9w4k0UK___XXXXXX');
var sheetDestino = destination.getFilesByType(MimeType.GOOGLE_SHEETS);
while (sheetDestino.hasNext()) {
SpreadsheetApp.open(sheetDestino.next()).getSheets().forEach(aba => {
aba.copyTo(sheetDestino);
});
};
}
我猜 while 指令中的这一行是问题所在,我尝试了其他选项,但都是 return 错误消息,请输入:
Exception: The parameters (DriveApp.FileIterator) don't match the method signature for SpreadsheetApp.Sheet.copyTo.
希望有人能帮助解决这个问题。
解释/问题:
您的目标是将特定的 sheet(制表符)复制到同一文件夹内的多个跨页sheet中。
这个问题与
sheetDestino.next()
是一个 file object but copyTo(spreadsheet) accepts a spreadsheet 对象有关。您可以get the id of the file and then use openById(id)获取传播sheet对象,您可以使用该对象将sheet复制到。
红利代码:
我添加了一个
if
条件以确保代码不会尝试将 sheet 复制到原始传播 sheet 文件。我加了一段代码,把复制的sheet到目的地sheet重命名为原来的名字。默认值为
copy of Sheet14..
.
解决方案:
function sendtomultiple(){
const source = SpreadsheetApp.getActiveSpreadsheet();
const source_id = source.getId();
const aba = source.getSheets()[13];
const destination = DriveApp.getFolderById('1o6p-53Q1ntJAVIJt9w4k0UK___XXXXXX');
const sheetDestino = destination.getFilesByType(MimeType.GOOGLE_SHEETS);
while (sheetDestino.hasNext()) {
let target_file = sheetDestino.next();
let target_id = target_file.getId();
let target_ss = SpreadsheetApp.openById(target_id);
if(target_id!=source_id){
aba.copyTo(target_ss).setName(aba.getName());
}
};
}
请记住,sheet getSheets()[13]
是 spreadsheet 文件中的第 14 个 sheet。如果你想获得第 13 个 sheet 你需要使用 getSheets()[12]
.