Created
June 20, 2014 13:29
-
-
Save tatesuke/65efa335695b2eaa8c13 to your computer and use it in GitHub Desktop.
GoogleDriveSpreadSheet上の住所一覧を地図にプロット ref: http://qiita.com/tatesuke/items/899cfa6f85350752bc0e
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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