← back to Shopify Sample Shipping
find-band.mjs
25 lines
import {query} from './query.mjs';
// Read the General profile with ALL location groups + their location sets
const q=`{deliveryProfile(id:"gid://shopify/DeliveryProfile/29033627699"){name
profileLocationGroups{
locationGroup{id locations(first:5){nodes{name}}}
locationGroupZones(first:30){nodes{zone{id name}
methodDefinitions(first:40){nodes{id name active
rateProvider{__typename ... on DeliveryRateDefinition{price{amount}}}
methodConditions{operator field conditionCriteria{__typename ... on MoneyV2{amount} ... on Weight{value unit}}}}}}}}}}`;
const d=await query(q);
let lgN=0;
for(const g of d.deliveryProfile.profileLocationGroups){
lgN++;
console.log(`\n== LOCATION GROUP #${lgN} ${g.locationGroup.id.split('/').pop()} locs:[${g.locationGroup.locations.nodes.map(l=>l.name).join(', ')}]`);
for(const z of g.locationGroupZones.nodes){
console.log(` ZONE ${z.zone.id.split('/').pop()} ${z.zone.name}:`);
for(const md of z.methodDefinitions.nodes){
const rp=md.rateProvider;
const price=rp?.price?`$${rp.price.amount}`:rp?.__typename;
const conds=md.methodConditions.map(c=>{const cr=c.conditionCriteria;const v=cr?.amount!==undefined?`$${cr.amount}`:(cr?.value!==undefined?`${cr.value}${cr.unit}`:'?');return `${c.field} ${c.operator} ${v}`;}).join(' AND ')||'(none)';
console.log(` ${md.id.split('/').pop()} ${md.name} [${md.active?'on':'OFF'}] ${price} {${conds}}`);
}
}
}