Japan Post Tracking
Posted on 22 September 2019 in dev
I wanted to be able in one click to check status of parcels on Japan Post. I scratched my own itch by developing a Chrome extension.
Tracking in one click
Receiving time to time parcels via Japan Post, I found frustrating to copy-paste the tracking number and then go to the Japan Post website, navigate the site and after a dozen of clicks, finally get the information I wanted.
Developing a Chrome extension
Creating a basic Chrome extension is well documented all over the web. You basically need two files: manifest.json
and a js script doing the work.
The files
The manifest.json
is here to tell the browser the extension name, version, description and its manifest version. You can add permissions, icons, what script to call and probably several other things.
Here is mine.
{
"name": "JapanPost Parcel Tracking",
"version": "1.0",
"manifest_version": 2,
"description": "Track your packages with JapanPost. Highlight the tracking number and
select the Track menu to be redirected to the Japan Post website.",
"permissions": [
"contextMenus"
],
"background": {
"scripts": ["script.js"]
},
"icons": { "16": "icons/favicon-16x16.png",
"32": "icons/favicon-32x32.png",
"48": "icons/favicon-48x48.png" },
"browser_action": {
"default_icon": "icons/favicon-32x32.png",
"icons": { "16": "icons/favicon-16x16.png",
"32": "icons/favicon-32x32.png",
"48": "icons/favicon-48x48.png"
}
}
}
The meaty part
The important part is the script which will do what you want. In my case, I needed that whatever text I've selected to be sent over to the Japan Post website.
To do so, I use the chrome.contextMenus.create
API which calls a js function get_tracking_number
to get the selected tracking number and create a new tab for the Japan Post tracking website with everything already loaded.
function get_tracking_number(tracking) {
console.log("The selection is " + tracking.selectionText + ".");
chrome.tabs.create({
url: "https://trackings.post.japanpost.jp/services/srv/search/direct?reqCodeNo1="+
tracking.selectionText+"&searchKind=S002&locale=en"
});
}
chrome.contextMenus.create({
title: "JP Parcel Track: %s",
contexts:["selection"],
onclick: get_tracking_number
});
How to use
Since I didn't pack the extension for a release on the Chrome store, we need to enable the Chrome developer mode and choose the Load unpacked
option.
Voila!
Conclusion
The extension does the job. In the future, I could add a way to change the locale for people who want the Japanese version of the tracking results.
That was a nice intro into developing extensions for a browser. Looking at the developer website for chrome, there are a ton of sample apps which could serve as a base for other extensions.