Perdonar por retomar este tema.... https://www.webempresa.com/foro/packs-webempresa/enlazar-woocommerce-con-google-sheets#post-476469
Pero me he dado cuenta que al actualizar la hoja de google, no amplia la lista de pedidos, sino que queda limitada a 10 clientes...lo suyo es que la importación de datos fuera de los últimos 100 pedidos, por ejemplo.... otra cosa podría ser, que no se borrara la hoja antes de poner los datos importados y los datos se fueran añadiendo a los que ya están en la hoja...
No sé que opción puede resultar mejor para que esa cantidad no se limite y los pedidos se vayan acumulando en la hoja ?
Perdonar por abrir otro tema, pero no he conseguido escribir en el otro. A ver si podéis fusionar este tema con el anterior.
Gracias
Contenido solo visible a usuarios registrados
Dejo por aquí esta información por si le sirven a alguien.
Tengo ahora 2 hojas de sheets :
- Una con el script que hizo Pepe, pero el limitado a solo 8 registros de pedidos, esta hoja se actualiza cada vez que la abro, sin pegas...
- la segunda, con el código de Bruno, no hace caso,,,, quizás sea por que lleva mucha cantidad de pedidos...
las dos con el mismo ajuste de actualización, que dejo aquí....
No sé si se podría ajustar la importación a solo los últimos 100 pedidos, por ejemplo, y de esa forma no recargar la solicitud de datos
hola Antonio.
Todos los códigos que te dimos están probados y funcionando, son códigos estándar que solo modificamos algunas cosas como por ejemplo ahora que solo quieres los 100 últimos pedidos:
function importarPedidos() {
var urlBase = 'https://tuweb.com/wp-json/wc/v3/orders';
var consumerKey = 'TU_CONSUMER_KEY';
var consumerSecret = 'TU_CONSUMER_SECRET';
var auth = "Basic " + Utilities.base64Encode(consumerKey + ":" + consumerSecret);
var sheet = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet();
// Obtener los IDs de pedidos ya importados para evitar duplicados
var lastRow = sheet.getLastRow();
var existingOrderIds = new Set();
if (lastRow > 1) {
var idColumn = sheet.getRange(2, 1, lastRow - 1, 1).getValues().flat();
idColumn.forEach(id => existingOrderIds.add(id.toString())); // Guardar los IDs en un Set
}
var perPage = 50;
var maxOrders = 100;
var page = 1;
var totalFetched = 0;
var newData = [];
while (totalFetched < maxOrders) {
var response = UrlFetchApp.fetch(urlBase + '?per_page=' + perPage + '&page=' + page + '&order=desc&orderby=date', {
"method": "get",
"headers": { "Authorization": auth }
});
var orders = JSON.parse(response.getContentText());
if (orders.length === 0) break;
orders.forEach(function(order) {
if (totalFetched >= maxOrders) return;
if (existingOrderIds.has(order.id.toString())) return; // Omitimos pedidos ya importados
var invoiceNumber = "";
if (order.meta_data) {
order.meta_data.forEach(function(meta) {
if (meta.key === "_wcpdf_invoice_number") {
invoiceNumber = meta.value;
}
});
}
order.line_items.forEach(function(item) {
newData.push([
order.id,
invoiceNumber,
order.date_created,
order.status,
order.billing.first_name + ' ' + order.billing.last_name,
order.billing.phone,
order.billing.email,
order.payment_method_title,
order.total,
item.name,
item.quantity,
item.price
]);
});
totalFetched++;
});
page++;
}
// Agregar solo los pedidos nuevos
if (newData.length > 0) {
sheet.getRange(sheet.getLastRow() + 1, 1, newData.length, newData[0].length).setValues(newData);
}
}
Acuérdate que tienes que modificar esto:
var urlBase = 'https://tuweb.com/wp-json/wc/v3/orders';
var consumerKey = 'TU_CONSUMER_KEY';
var consumerSecret = 'TU_CONSUMER_SECRET';
Si después de esto sigues con el problema lo que te aconsejo es que utilices el plugin que te indicamos.
Un saludo
Hola Antonio.
El error que muestras es porque la URL Base no esta bien definida, tiene que ser esto:
var urlBase = 'https://tuweb.com/wp-json/wc/v3/orders';
Es posible que lo tengas en mayúscula o no este bien, por ejemplo como esto:
var URLBase = 'https://tuweb.com/wp-json/wc/v3/orders'; // Con mayúsculas
Ten en cuenta que el lenguaje distingue entre urlBase y URLBase, por lo que URLBase no funcionará si en otro lugar usas urlBase
No se que codigo es en el que tienes el error pero buenos tienes que revisar lo que te comento y si tienes problemas, no te calientes la cabeza, utiliza el plugin.
Acuérdate que tienes que modificar esto por la URL de tu web y añadir las Key:
var urlBase = 'https://tuweb.com/wp-json/wc/v3/orders';
var consumerKey = 'TU_CONSUMER_KEY';
var consumerSecret = 'TU_CONSUMER_SECRET';
Un saludo