Googleスプレッドシートからダウンロードしたcsvファイルを使い、Google My Map にピンを立てる ことは可能になりました。
しかし店名だけではお店のジャンルが分からないことも多いため、csvを作成する際にカテゴリーのデータを追加することにしました。
カテゴリー対応表作成
住所一覧から緯度経度を求める(その2)で既に表をお見せしましたが、その表の作成方法を記します。
リストを入手したサイトを開き、任意の地域を開きます。

[Ctrl + U] で、ソースを表示させます。
内容を見ていくと、お店のカテゴリー一覧を書いた場所があります。
これをもとに、対応表を作りました。この部分をコピペして、不要部分を置換で消すと楽です。

スプレッドシートに、[category]シートを作成します。

上で調べた内容を表にします。

GAS書き換え
[all_shop_list]シートと [tmp]シートのH列に、それぞれ [category_J] と入力しておきます。

以下のGASスクリプトを実行します。
function processGeocodeInTmpSheet_CategoryJ() {
const TMP_SHEET_NAME = "tmp";
const CATEGORY_SHEET_NAME = "category";
const LIMIT = 500;
const ss = SpreadsheetApp.getActiveSpreadsheet();
const sheet = ss.getSheetByName(TMP_SHEET_NAME);
const data = sheet.getDataRange().getValues();
const headers = data[0];
const addressCol = headers.indexOf("address");
const latCol = headers.indexOf("Latitude");
const lngCol = headers.indexOf("Longitude");
const categoryCol = headers.indexOf("category");
const categoryJCol = headers.indexOf("category_J");
if (addressCol === -1 || latCol === -1 || lngCol === -1 || categoryCol === -1 || categoryJCol === -1) {
Logger.log("必要な列が見つかりません。");
return;
}
// ▼ カテゴリ対応表の読み込み(A列: 数字, B列: 日本語カテゴリ名)
const categorySheet = ss.getSheetByName(CATEGORY_SHEET_NAME);
const categoryData = categorySheet.getRange("A2:B17").getValues();
const categoryMap = {};
categoryData.forEach(row => {
categoryMap[row[0]] = row[1];
});
let updatedCount = 0;
for (let i = 1; i < data.length && updatedCount < LIMIT; i++) {
const row = data[i];
const address = row[addressCol];
const lat = row[latCol];
const lng = row[lngCol];
const category = row[categoryCol];
const categoryJ = row[categoryJCol];
// ▼ category_J を埋める(未入力のみ)
if (category && categoryJ === "" && categoryMap[category]) {
sheet.getRange(i + 1, categoryJCol + 1).setValue(categoryMap[category]);
}
// ▼ ジオコーディング(未入力の行のみ)
if (address && lat === "" && lng === "") {
const geo = Maps.newGeocoder().geocode(address);
if (geo.status === "OK" && geo.results.length > 0) {
const loc = geo.results[0].geometry.location;
sheet.getRange(i + 1, latCol + 1).setValue(loc.lat);
sheet.getRange(i + 1, lngCol + 1).setValue(loc.lng);
updatedCount++;
Utilities.sleep(150);
} else {
Logger.log(`ジオコーディング失敗: ${address}`);
}
}
}
Logger.log(`${updatedCount} 件の住所を処理しました。`);
}
日本語でのカテゴリーを入力できました。

Google My Map に取り込み
[Google My Map にピンを立てる] を参照して、マップに取り込みます。
ログイン ‹ できることなら楽したい — WordPress
データ内容に日本語表記のカテゴリーを追加することができました。

コメント