Skip to content

Instantly share code, notes, and snippets.

@tatesuke
Created June 20, 2014 13:29
Show Gist options
  • Save tatesuke/65efa335695b2eaa8c13 to your computer and use it in GitHub Desktop.
Save tatesuke/65efa335695b2eaa8c13 to your computer and use it in GitHub Desktop.
GoogleDriveSpreadSheet上の住所一覧を地図にプロット ref: http://qiita.com/tatesuke/items/899cfa6f85350752bc0e
var WIDTH_CELL = "B1";
var HEIGHT_CELL = "B2";
var ZOOM_CELL = "B3";
var CENTER_CELL = "B4";
var DATA_START_ROW = 7;
var VISIBLE_COLUMN = 3;
// スプレッドシートを開いた時に自動的に実行される関数
function onOpen() {
// メニューを作成
var spreadsheet = SpreadsheetApp.getActiveSpreadsheet();
var entries = [
{
name : "地図を作成",
functionName : "createMap"
},
{
name : "地図を削除",
functionName : "resetMap"
}
];
spreadsheet.addMenu("地図作成メニュー", entries);
};
// 地図を作成メニューで実行する関数
function createMap(argSheet) {
// 現在のシートを得る
var sheet = SpreadsheetApp.getActiveSheet();
// 各セルのパラメータを元に地図を作成
var map = Maps.newStaticMap()
.setLanguage("ja")
.setSize(sheet.getRange(WIDTH_CELL).getValue(), sheet.getRange(HEIGHT_CELL).getValue())
.setZoom(sheet.getRange(ZOOM_CELL).getValue())
.setCenter(sheet.getRange(CENTER_CELL).getValue());
// 住所にマーカーをプロットする
var lastRow = sheet.getLastRow();
for (var row = DATA_START_ROW; row <= lastRow; row++) {
if (sheet.getRange(row, VISIBLE_COLUMN).getValue() == "") {
continue;
}
map.addMarker(sheet.getRange(row, 2).getValue());
}
// 地図をシートに挿入
sheet.insertImage(map.getMapUrl(), 5, 1);
};
// 地図を削除メニューで実行する関数
function resetMap() {
var spreadSheet = SpreadsheetApp.getActiveSpreadsheet();
// 現在のシートの名前を保存しておく
var currentSheet = spreadSheet.getActiveSheet();
var sheetName = currentSheet.getName();
// 新しいシートを作成して値をコピーする
var newSheet = spreadSheet.insertSheet();
currentSheet.getRange("A:D").copyTo(newSheet.getRange("A:D"));
// 現在のシートを削除
spreadSheet.deleteSheet(currentSheet);
// シートの名を復旧
newSheet.setName(sheetName);
// 新しいシートをアクティブにする
newSheet.activate();
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment