Google マイマップのデータをKMLにエクスポートしてCSVに変換する方法

google earthで表示」を右クリックしてリンクアドレスをコピーして、そのURLの中の「output=nl」を「output=kml」に変更してアクセスするとkmlファイルがダウンロードされます。↓のプログラムをkml2csv.jsという名前で保存して、それに↑のKMLファイルをドラッグ&ドロップしてください。同名のCSVファイルに変換されます。

※「google earthで表示」を押してダウンロードされるKMLでは、変換できません。
※jsファイルが関連付けされてないと、実行できないかもしれません。
※変換できない場合があったので修正しました。2010.1.17

var input;
var output;

input = WScript.Arguments(0);
output=input.replace(".kml",".csv");
var fs = new ActiveXObject ("Scripting.FileSystemObject");
var outf = fs.CreateTextFile (output, true); 
var xmlDoc = WScript.CreateObject("MSXML.DOMDocument"); 
xmlDoc.load(input); 

var wpts = xmlDoc.documentElement.getElementsByTagName("Placemark");
outf.WriteLine("lat,lon,name,snippet,description");
for(var i = 0; i<wpts.length;i++){
 var names = wpts[i].getElementsByTagName("name");
 if(names.length>0 && !!names[0].childNodes[0]) var name = names[0].childNodes[0].text;
 var snippets = wpts[i].getElementsByTagName("Snippet");
 if(snippets.length>0 && !!snippets[0].childNodes[0]) var snippet = snippets[0].childNodes[0].text;
 var descriptions = wpts[i].getElementsByTagName("description");  
 if(descriptions.length>0 && !!descriptions[0].childNodes[0]) var description = descriptions[0].childNodes[0].text;
 // descriptionのタグを消したい時は、こちら↓
 // if(descriptions.length>0 && !!descriptions[0].childNodes[0]) var description = descriptions[0].childNodes[0].text.replace(/\r?\n/g, "").replace(/,/g," ").replace(/<("[^"]*"|'[^']*'|[^'">])*>/g," ");
 var points = wpts[i].getElementsByTagName("Point");
 if(points.length>0 && !!points[0].childNodes[0]) var point = points[0].childNodes[0].text.split(",");
 outf.WriteLine(point[1]+","+point[0]+","+name+","+snippet+","+description);
    
 }//for i

outf.Close();