Google Apps Script × LINE Notify로 지정된 주소의 GoogleMaps 이미지를 LINE으로 보내기

개요



주소 또는 위도 경도를 지정하여 지도 이미지를 생성하고 LINE에 메시지로 보낼 때의 메모입니다.

지도 이미지 생성



Google Static Maps API를 사용하여 지도 이미지를 가져옵니다.
function sendMapsImage() {
  // アドレスの指定
  var address = '東京都千代田区丸の内1丁目9−1'  // 東京駅
  var latitude = 35.6817879  // 東京駅 緯度
  var longitude = 139.7645727  // 東京駅 経度

  // StaticMap の基本設定
  var map = Maps.newStaticMap()
    .setSize(600, 600)  // 画像サイズの指定 (Max: 600x600)
    .setLanguage('ja')  // 言語の設定
    .setMobile(true)  // モバイル端末向けの地図
    .setMapType(Maps.StaticMap.Type.HYBRID)  // 航空写真+通常

  // StaticMap上にマーカーを設置
  map.addMarker(address) // 住所を指定する場合
  // map.addMarker(latitude, longitude)  // 緯度経度を指定する場合 

  // Blobとして画像を取得
  var mapBlob = map.getBlob()

  // StaticMap へのパスを取得
  var mapUrl = map.getMapUrl()

  // Line に送信
  sendHttpPostImage(mapUrl, mapBlob)
}

Google Static Map에 대한 다른 사양은 Google의 Reference를 이해하기 쉽습니다.
참고: Class StaticMap  |  Apps Script  |  Google Developers

지도 유형(Maps.StaticMap.Type)은 다음과 같습니다.
참고: Enum Type  |  Apps Script  |  Google Developers

Line으로 보내기



이하의 기사를 참고로 했습니다.
참고 : Google App Script에서 LINE Notify로 LINE에 메시지 보내기 - Qiita

이후, 상기 링크처를 참고로 토큰을 취득할 수 있는 것으로서 이야기를 진행합니다.
위 링크 기사의 메시지 전송 부분을 이미지 전송을 위해 변경합니다.
function sendHttpPostImage(message, blob){
  var token = [access_token];
  var formData = {
   'message' : message,
   'imageFile': blob  // 地図画像を添付
  }
  var options =
   {
     "method"  : "post",
     "payload" : formData,  // message, imageFile を formData としてPost
     "headers" : {"Authorization" : "Bearer "+ token}
   };

   UrlFetchApp.fetch("https://notify-api.line.me/api/notify",options);
}

이상으로 완료입니다.
sendMapsImage()를 실행하면 Line에 이미지가 도착합니다.



Line에 이미지만 보낼 수 없으며 message가 필수인 것 같습니다.
또한 1시간에 가능한 이미지 업로드 수에는 제한이 있으므로 주의가 필요한 것 같습니다.

참고: 명령줄에서 LINE으로 메시지를 보낼 수 있음 LINE Notify « LINE Engineers' Blog
참고: Class UrlFetchApp  |  Apps Script  |  Google Developers

보충



Line Engineers 'Blog 예제는 imageFullsize=URL 되어 버려, 유효한 URL이라고는 인식해 주지 않는 모양입니다.

좋은 웹페이지 즐겨찾기