Skip to content

Instantly share code, notes, and snippets.

@benjibee
Created February 10, 2018 13:19
Show Gist options
  • Star 13 You must be signed in to star a gist
  • Fork 1 You must be signed in to fork a gist
  • Save benjibee/37e0031a8aa7a25e9814a01bdb03217c to your computer and use it in GitHub Desktop.
Save benjibee/37e0031a8aa7a25e9814a01bdb03217c to your computer and use it in GitHub Desktop.
A little script to import starred places saved as geoJSON data from Google Maps. Could be better. Works.
// This script is meant to import Google Maps starred places into
// another Google account.
// Given a geoJSON file of Google Maps starred places (places.json)
// exported by Google takeout (account backup) this script should
// open each place URL and manually click save.
// Upon first run, it's best to stop it and manually login to your
// Google account otherwise you'll run into a non-verified device
// issue. Run again and it should continue through with problems.
// Make sure to enter you Google account name and password (purge after use!)
// To init, run npm i -D puppeteer and then node scrape.js
const puppeteer = require('puppeteer');
const fs = require('fs');
const GOOGLE_ACCOUNT_ID = '';
const GOOGLE_ACCOUNT_PASS = '';
const jsonFile = fs.readFileSync(__dirname + '/places.json');
const jsonData = JSON.parse(jsonFile);
let scrape = async () => {
const browser = await puppeteer.launch({headless: false});
const page = await browser.newPage();
await page.goto('https://accounts.google.com/', {waitUntil: 'networkidle2'});
const result = await page.evaluate(() => {
document.getElementById('identifierId').value = GOOGLE_ACCOUNT_ID;
document.getElementById('identifierNext').click();
window.setTimeout(function(){
document.querySelectorAll("[name='password'")[0].value = GOOGLE_ACCOUNT_PASS;
document.getElementById('passwordNext').click();
}, 250);
return;
});
await page.waitFor(4000)
for (let index in jsonData.features) {
let place = jsonData.features[index].properties["Google Maps URL"];
let name = jsonData.features[index].properties["Location"]["Business Name"];
await page.goto(place, {waitUntil: 'networkidle2'});
await page.evaluate(() => {
if (typeof(document.querySelectorAll("[aria-label='SAVE']")[0]) != 'undefined') {
document.querySelectorAll("[aria-label='SAVE']")[0].click();
window.setTimeout(function(){
document.querySelectorAll("[data-index='2']")[0].click();
}, 50);
console.log('Added "' + name + '" to your starred places!');
} else {
console.log('Skipping "' + name + '" as it was already starred…');
}
return;
});
await page.waitFor(200)
}
browser.close();
return;
};
scrape().then((value) => {
console.log('All done!');
});
@ogumc888
Copy link

ogumc888 commented Apr 8, 2023

Hey @TreJoren, take a look at https://github.com/robinnorth/google-migration-utils. Download the source of the repo and follow the README instructions to run the Maps import tool from a command prompt, no coding required.

You'll need to have Node LTS and npm installed (npm is included with Node) to run it. Take a look at https://nodesource.com/blog/installing-nodejs-tutorial-windows/ for a tutorial on getting it all set up.

I still don’t understand how I’m supposed to after I installed NODE JS on my computer…..I have no idea after reading READ ME…what do I do with ‘ yarn ‘ where to put it..could you please be so kind to offer a step by step tutorial for crying person with zero knowledge of it… thank you so much ( me crying ugly face )😭

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment