If you have address fields for street address, city, state, and zip but the user enters the entire address into the street address field, you can use a Data Hook like this to parse it into the individual fields.
For more information about Data Hooks for Portal 3.0 and Workspaces, please see our guide.
const parser = await import("parse-address"); checkAddress = (address) => { const prefix = address.prefix || ""; const number = address.number || ""; const street = address.street || ""; const type = address.type || ""; const suffix = address.suffix || ""; let outAddress = prefix + " " + number + " " + street + " " + type + " " + suffix; let addressArray = outAddress.split(""); if (addressArray[addressArray.length - 1] === " ") { addressArray.pop(); } if (addressArray[0] === " ") { addressArray.shift(); } outAddress = addressArray.join(""); return outAddress; }; module.exports = async ({ recordBatch, session, logger }) => { recordBatch.records.forEach((record) => { const streetAddress = record.get("streetAddress"); const City = record.get("City"); const State = record.get("State"); const Zip = record.get("Zip"); if (streetAddress && !City && !State && !Zip) { let parsedAddress = parser.parseLocation(streetAddress); record.set("streetAddress", checkAddress(parsedAddress)); if (parsedAddress.sec_unit_num) { record.set( "streetAddress2", parsedAddress.sec_unit_type + " " + parsedAddress.sec_unit_num ); } record.set("City", parsedAddress.city); record.set("State", parsedAddress.state); record.set("Zip", parsedAddress.zip); } }); };
Comments
0 comments
Please sign in to leave a comment.