(GAS)今自分ができる範囲のプログラムのラインbot

いろいろ参考にして自分なりに書いたプログラムです。

```ruby:main.gs

var access_token = 'XXXXXXXXX';

function doPost(e) {
  var events = JSON.parse(e.postData.contents).events;
  var replyToken_ = e.replyToken;
  events.forEach(function (event) {
    switch (event.type) {
      case 'message':
        reply(event);
        break;
      default:
        ;
        break;
    }
  });
}

function reply(e) {
  var Message = e.message.text;
  var groupid_ = e.source.groupId;


//タイプ取得

    if (Message == 'name') {
    var id0 = e.source.userId;
  var userName = UrlFetchApp.fetch("https://api.line.me/v2/bot/group/" + groupid_ + "/member/"+ id0, {"headers" : {"Authorization" : "Bearer " + access_token}});
  const input_name = JSON.parse(userName).displayName;

  var message = {
    'replyToken': e.replyToken,
    'messages': [
      {
        'type': 'text',
        'text': 'user_name = '+ input_name
      }
    ]
  };

    }

    if (Message == 'user') {
    var id = e.source.userId;

  var message = {
    'replyToken': e.replyToken,
    'messages': [
      {
        'type': 'text',
        'text': 'user_id = '+ id
      }
    ]
  };

    }
    if (Message == 'group') {
          var id2 = e.source.groupId;

  var message = {
    'replyToken': e.replyToken,
    'messages': [
      {
        'type': 'text',
        'text':  'group_id = '+ id2
      }
    ]
  };

    }
    if (Message == 'room') {
    var id3 = e.source.roomId;

        var message = {
    'replyToken': e.replyToken,
    'messages': [
      {
        'type': 'text',
        'text': 'room_id = '+ id3
      }
    ]
  };
    }
  if (Message == '退出') {//botがグループ退出
    var message = {
      'replyToken': e.replyToken,
      'messages': [{
  "type": "text",
  "text":'退出します。'
}]
    }; 
  }
  
  if (Message == 'test') {
    var message = {
      'replyToken': e.replyToken,
      'messages': [{
  "type": "text",
  "text":'ok'
}]
    }; 
  }
 if (Message == '選択test') {
 var message = {
  'replyToken': e.replyToken,
   
   'messages': [{
     "type": "template",
					"altText": "どっち派",
					"template": {
						"type": "buttons",
						"thumbnailImageUrl": "https://placehold.jp/640x480.jpg?text=test", // 画像のURL
						"imageAspectRatio": "rectangle", // 画像のアスペクト比、「rectangle: 1.51:1」・「square: 1:1」、デフォルト値はrectangle
						"imageSize": "cover", // 画像の表示形式
						"imageBackgroundColor": "#FFFFFF", // 画像の背景色
						"title": "メニュー",
						"text": "以下より選択してください。",
						"defaultAction": {
							"type": "uri",
							"label": "View detail",
							"uri": "https://twitter.com/nibel_tube/"
						},
						"actions": [
							{
								"type": "message",
								"label": "test",
								"text": "ok"
							},
							{
								"type": "message",
								"label": "test",
								"text": "ok"
							}
						]
					}
    }],
    'notificationDisabled': false //trueだと通知されない
 }
  }
   const CITY_ID = `130010`; //取得したい地域のIDを指定

 var turl = `https://weather.tsukumijima.net/api/forecast?city=${CITY_ID}`;

 if(Message =="天気") {
        var res = UrlFetchApp.fetch(turl).getContentText();  // 天気APIを叩く
        var json = JSON.parse(res);
        json.description.text
           var message = {

            'replyToken': e.replyToken,
            'messages': [{
              'type': 'text',
              'text': json.location.prefecture + 'の今日の天気は、「' + json.forecasts[0].detail.weather + '」です。\n'
            +json.location.prefecture + 'の明日の天気は、「' + json.forecasts[1].detail.weather + '」です。\n'
            + '\n'+ json.description.bodyText,
            }],
          }
}
  if (Message == '画像test') {
   var message ={
  'replyToken': e.replyToken,
   'messages': [{
      'type': 'image',
     'originalContentUrl': 'https://placehold.jp/640x480.jpg?text=test',
      'previewImageUrl': 'https://placehold.jp/240x240.jpg?text=test' 
    }],
    'notificationDisabled': false //trueだと通知されない
  
  }
  }
  if (Message == '日時') {

         var message ={
  'replyToken': e.replyToken,
  
   "messages": [
				{
					"type": "template",
					"altText": "日時",
					"template": {
						"type": "buttons",
						"thumbnailImageUrl": "https://placehold.jp/640x480.jpg?text=time", // 画像のURL
						"imageAspectRatio": "rectangle", // 画像のアスペクト比、「rectangle: 1.51:1」・「square: 1:1」、デフォルト値はrectangle
						"imageSize": "cover", // 画像の表示形式
						"imageBackgroundColor": "#FFFFFF", // 画像の背景色
						"title": "メニュー",
						"text": "以下より選択してください。",
						"defaultAction": {
							"type": "uri",
							"label": "View detail",
							"uri": "https://twitter.com/nibel_tube/"
						},
						"actions": [
							{
								"type": "datetimepicker",
								"label": "日時を選択してください。",
								"data": "action=settime",
								"mode": "datetime",
								"initial": "2017-12-25t00:00",
								"max": "2100-01-24t23:59",
								"min": "2017-12-25t00:00"
							}
						]
					}
				}
			],
			"notificationDisabled": false // trueだと通知されない
  }
  }
  if (Message == 'カメラ') {
     var message ={

  'replyToken': e.replyToken,

  "messages": [
				{
					"type": "template",
					"altText": "カメラ",
					"template": {
						"type": "buttons",
						"thumbnailImageUrl": "https://placehold.jp/640x480.jpg?text=camera", // 画像のURL
						"imageAspectRatio": "rectangle", // 画像のアスペクト比、「rectangle: 1.51:1」・「square: 1:1」、デフォルト値はrectangle
						"imageSize": "cover", // 画像の表示形式
						"imageBackgroundColor": "#FFFFFF", // 画像の背景色
						"title": "メニュー",
						"text": "以下より選択してください。",
						"defaultAction": {
							"type": "uri",
							"label": "View detail",
							"uri": "https://twitter.com/nibel_tube/"
						},
						"actions": [
							{
								"type": "cameraRoll",
								"label": "写真を選択してください。"
							}
						]
					}
				}
			],
			"notificationDisabled": false // trueだと通知されない
  }
  }
   if (Message != undefined) {
    var replyData = {
      'method': 'post',
      'headers': {
        'Content-Type': 'application/json',
        'Authorization': 'Bearer ' + access_token
      },
      'payload': JSON.stringify(message)
    };
    UrlFetchApp.fetch('https://api.line.me/v2/bot/message/reply', replyData);
  }
  
    if (Message == '退出') {//botがグループ退出
  var url = 'https://api.line.me/v2/bot/group/'+groupid_+'/leave'
  var leaveData = {
      'method': 'post',
      'headers': {
        'Content-Type': 'application/json',
        'Authorization': 'Bearer ' + access_token
      }
    };
    UrlFetchApp.fetch(url, leaveData);
 };
   
}


```
なかなか参考にして書くの大変でした。