--
You received this message because you are subscribed to the Google Groups "Google Apps Script Community" group.
To unsubscribe from this group and stop receiving emails from it, send an email to google-apps-script-c...@googlegroups.com.
To view this discussion visit https://groups.google.com/d/msgid/google-apps-script-community/5c4e23f9-0eeb-401d-8eac-990b3c5cfcbbn%40googlegroups.com.
Na função getSheetById
, você escreveu:
if (sheets[i].getSheetId == sheet_id) {
Mas getSheetId
é um método, não uma propriedade — ou seja, falta os parênteses ()
para chamá-lo.
function getSheetById(wb_id, sheet_id) { var wb = SpreadsheetApp.openById(wb_id); var sheets = wb.getSheets
(); for (var i in sheets) { if (sheets[i].getSheetId() == sheet_id) { // <-- parênteses aqui
var sheetName = sheets[i].getSheetName
(); return wb.getSheetByName(sheetName); // retorna o objeto Sheet } } throw new Error('Sheet ID ' + sheet_id + ' not found in workbook ' + wb_id); }
getSheetId()
é um método do objeto Sheet
(documentação oficial).
Quando você usou getSheetId
sem os parênteses, o Apps Script tentou comparar a função nativa em si (um objeto Function), e isso causou o erro:
Unexpected error while getting the method or property valueOf on object function () { [native code] }
— basicamente, ele não conseguiu converter a função em número.
Sempre use for (var i = 0; i < sheets.length; i++)
em vez de for (i in sheets)
— o for..in
percorre também propriedades herdadas, o que pode causar erros inesperados.
Adicione Logger.log()
dentro do loop para depurar:
Logger.log('Checking sheet: ' + sheets[i].getName() + ' (' + sheets[i].getSheetId() + ')');
Retorne o próprio Sheet
(como no exemplo corrigido), não apenas o nome — isso facilita manipular os dados diretamente.
// Folder com as planilhas de origem const folderId = '1ytmDneYZHgFnLlKo8zSlZfzEHAKwEQZo'; // Planilha de destino
const destId = '1xMuT_5ea44b_wv_r129-kLyZ9-fbQaJPg2hjPIA84nU'; const sheet1Id = 0; function main(
) { const folder = DriveApp.getFolderById(folderId); const files = folder.getFilesByType(MimeType.GOOGLE_SHEETS); const destSS = SpreadsheetApp.openById(destId); const destSheet = destSS.getSheets()[0]; while (files.hasNext()) { const file = files.next(); const srcSS = SpreadsheetApp.openById(file.getId()); const sheet = getSheetById(srcSS.getId(), sheet1Id); const data = sheet.getDataRange().getValues(); destSheet.getRange(destSheet.getLastRow() + 1, 1, data.length, data[0].length).setValues(data); } } function getSheetById(wb_id, sheet_id) { const wb = SpreadsheetApp.openById(wb_id); const sheets = wb.getSheets(); for (let i = 0; i < sheets.length; i++) { if (sheets[i].getSheetId() == sheet_id) { return sheets[i]; } } throw new Error('Sheet ID ' + sheet_id + ' not found in ' + wb_id); }
--
--