Я пытаюсь запустить скрипт, который будет копировать информацию с нескольких разных листов в другой файл. У меня проблемы с функцией forEach
. Ошибка, которую я получаю:
Ошибка
ReferenceError: листы не определены
копировать @ Code.gs:9
копиинфо @ Code.gs:4
function copyInfo() {
var sheets = SpreadsheetApp.getActive().getSheets(); // get all sheets
sheets.forEach(copy)
}
function copy() {
var sheetName = sheets.getActiveSheet.getName();
if (sheetName.includes("*"))
var copySheet = SpreadsheetApp.getActiveSheet();
var sheetName=copySheet.getName();
var pasteSpreadsheet = SpreadsheetApp.openById("1NXmdq6yCKC6oiDAQNXcovj85697__rCeVJiIT_ou_gI");
//Create new sheet if one doesn't exist
var newSheet = pasteSpreadsheet.getSheetByName(sheetName);
if (newSheet != null)
pasteSpreadsheet.deleteSheet(newSheet);
newSheet = pasteSpreadsheet.insertSheet();
newSheet.setName(sheetName);
//Copy and paste data
// Clear the Google Sheet before copy
newSheet.clear({contentsOnly: true});
// get source range
var source = copySheet.getRange("B2:B");
var values = source.getValues();
// get destination range
var destination = newSheet.getRange(1,1,values.length,values[0].length);
// copy values to destination range
destination.setValues(values);
}
Если вы создаете функцию для использования с forEach, эта функция должна принимать отдельный элемент в качестве параметра. В этом случае каждый «лист» из SpreadsheetApp.getActive().getSheets() будет передан в качестве первого параметра в вашу функцию копирования, но функция копирования не принимает никаких параметров как есть.
function copy(sheet) {
var sheetName = sheet.getName();
if (sheetName.includes("*"))
...
}
Ну... я понял. Конечно, это был просто синтаксис. Спасибо за ваш ответ!
function copyInfo() {
const dontcopy = ["Sh1","Sh2",...];
var sheets = SpreadsheetApp.getActive().getSheets(); // get all sheets
sheets.filter(sh => !~dontcopy.indexOf(sh.getName()).forEach(s => {
s.activate();
copy();
});
}
Есть определенные листы, которые нельзя скопировать, и мне нужны только выбранные столбцы из листов, которые я копирую. Спасибо за ваш ответ
Таким образом, вы можете использовать фильтр, чтобы отфильтровать их
Я понимаю ошибку, которую я сделал, но я исправил ее, и я получаю "TypeError: Cannot read property 'getName' of undefined"