住所リストから地図画像を生成するGoogle Apps Scriptです。それぞれの住所にマーカー(ピン)も表示されるので、家庭訪問の経路検討に便利かも?
特にありません。今お使いのスプレッドシートに組み込めます。
東京駅付近のいくつかの地点を用意してみました。
上のメニューにある「スクリプト実行」から「住所から地図画像を生成する」を実行します。
地図が出力されました!・・・が、Googleマップのスクリーンショットは掲載NGらしく、モザイクをかけています。
うっすら赤くなっている部分にマーカー(ピン)が立っています。マーカーには行番号も記載されているので、どの住所に対応したマーカーかわかるようになっています。
1つ目の住所が中心になりますが、中心から遠い地点はマーカーが表示されない場合があります。
コードのsetSize()を大きくしたり、setZoom()を小さくするなど調整してみてください。
/**
* このスクリプトの説明、使い方はこちら。
* https://myfunc.jp/items/00118/index.html
*/
function onOpen() {
// スプレッドシートを開いたときに実行される関数
// UIの取得
const ui = SpreadsheetApp.getUi()
// メニューの表示名
const menu = ui.createMenu('スクリプト実行');
// メニューに追加するボタン
menu.addItem('住所から地図画像を生成する', 'generate_static_maps');
// メニューを画面に追加する
menu.addToUi();
}
function generate_static_maps() {
// アクティブなスプレッドシートを開く
const ss = SpreadsheetApp.getActiveSpreadsheet();
// アクティブなシートを開く
const sheet = ss.getActiveSheet();
// シートに入力されている値を取得する。使用されている範囲のオブジェクトを取得
let range = sheet.getRange(1, 1, sheet.getLastRow(), sheet.getLastColumn());
// セルの値を取得する
let values = range.getValues();
// 静的な地図を生成する
let map = Maps.newStaticMap();
map.setLanguage('ja') // 地図の言語指定
map.setSize(500, 500); // 地図サイズ
map.setZoom(15); // 地図の縮尺。大きいほど拡大される。
map.setCenter(values[1][1]); // 地図の中心地点を指定する。住所リストの1行目とする
// 住所の数だけピン(マーカー)を立てていく
for (let i = 1; i < values.length; i++) {
// マーカーのスタイルを設定。サイズMID、色は赤、値はセルの行番号とする
map.setMarkerStyle(Maps.StaticMap.MarkerSize.MID, Maps.StaticMap.Color.RED, i + 1);
// 住所をもとにマーカーをセット
map.addMarker(values[i]);
}
sheet.insertImage(map, sheet.getLastColumn() + 1, 1);
}