모르는 사람과 이미지를 공유하고 싶습니다.

아는 사람이 아닌 사람 사진을 공유하고 싶습니다.



필요했기 때문에 만들어 보았습니다.
대화의 샘플은 이쪽
URL을 표시하면이 이미지를 표시하는 QR 코드가 표시됩니다.


이번에 사용한 것



-Google App Script(메인)
-Google Charts API(QR 코드)
-line bot (완료된 QR 코드 링크 전송)

Google Charts API(QR 코드)


var outputUrl = "https://chart.apis.google.com/chart?cht=qr&chs=130x130&chl=" + imageUrl;

실제로 만들고 싶지만 지금은 무리이므로 API에 의존합니다.
크기와 보내고 싶은 내용을 URL로 지정하는 것만으로 QR 코드를 나타냅니다.
굉장히
언제 없을지 모르겠다.
↓공식

Google Charts Infographics QRcode



linebot 정보



기본적으로 앵무새 반환의 bot입니다.
자세히 알고 싶다면 "linebot GAS 앵무새 반환"을 통해 조사하면 얼마든지 나옵니다.
userID를 얻고 텍스트를 보내는 것보다 리플레이 토큰을 얻고 거기에 던지는 것이 더 이상 제한과 관련이 없을 것임을 최근에 알았습니다.
json 알면 할 수있는 일이 증가합니다.

전용



실제로 사용할 때는 라인의 액세스 토큰과 폴더의 ID를 자신의 것으로 해 넣어 주세요
모르면 적당히 구그하면 나옵니다.

흐름으로는
전송된 이미지를 GoogleDrive에 저장하고 누구나 볼 수 있도록 한 후 공유 URL을 GoogleChartsAPI에 넣어 회신합니다.
function doPost(e) {
  //eがundefinedの場合動作を終了する
  if (typeof e === "undefined"){return}
  var events = JSON.parse(e.postData.contents).events;
  events.forEach(function(event) {
   if(event.type == "message") { onMessage(event,follow(event)); }
  });
}
//LINE Messaging APIのチャネルアクセストークン
var LINE_ACCESS_TOKEN = "自分のラインアクセストークン";
//画像を保存するフォルダーID
var GOOGLE_DRIVE_FOLDER_ID = "保存先のフォルダーID";

function onMessage(event){
  //受信したメッセージ情報を変数に格納する
  var reply_token = event.replyToken; //reply token
  var messageType = event.message.type; //メッセージタイプ

  switch (messageType) {
    case "text":
      // テキストの場合の処理
      break
    case "image":
        //変数LINE_END_POINTとreply_tokenを関数getImageに渡し、getImageを起動する
        getImage(event.message.id , reply_token);
  }
}
//Blob形式で画像を取得する
function getImage(messageId , reply_token){
  //ファイル名に使う現在日時をMomentライブラリーを使って取得
  var formattedDate = Moment.moment().format("YYYYMMDD_HHmmss"); //現在日時を取得
  var url = "https://api-data.line.me/v2/bot/message/" + messageId + "/content";
  var headers = {
    "Content-Type": "application/json; charset=UTF-8",
    "Authorization": "Bearer " + LINE_ACCESS_TOKEN
  };
  var options = {
    "method" : "get",
    "headers" : headers,
  };
  var res = UrlFetchApp.fetch(url, options);
  //Blob形式で画像を取得し、ファイル名を設定する
  //ファイル名: LINE画像_YYYYMMDD_HHmmss.png
  var imageBlob = res.getBlob().getAs("image/png").setName("LINE画像_" + formattedDate + ".png");
  //変数imageBlobとreply_tokenを関数saveImageに渡し、saveImageを起動する
  saveImage(imageBlob, reply_token);
}
//画像をGoogle Driveのフォルダーに保存する
function saveImage(imageBlob, reply_token ){
  var fileID = DriveApp.getFolderById(GOOGLE_DRIVE_FOLDER_ID)
              .createFile(imageBlob).getId();
  var imageFile = DriveApp.getFileById(fileID);
    imageFile.setSharing(DriveApp.Access.ANYONE_WITH_LINK, DriveApp.Permission.VIEW);
  var imageUrl = imageFile.getDownloadUrl();
  var message = "https://chart.apis.google.com/chart?cht=qr&chs=130x130&chl=" + imageUrl;
  //変数reply_tokenとmessageを関数sendMessageに渡し、sendMessageを起動する
  sendMessage(reply_token,  message)
}
//ユーザーにメッセージを送信する
function sendMessage(reply_token , text){
  var line_endpoint = 'https://api.line.me/v2/bot/message/reply';
  UrlFetchApp.fetch(line_endpoint, {
    'headers': {
      'Content-Type': 'application/json; charset=UTF-8',
      'Authorization': 'Bearer ' + LINE_ACCESS_TOKEN,
    },
    'method': 'POST',
    'payload': JSON.stringify({
      'replyToken': reply_token,
      'messages': [{'type': 'text','text': text,}],
    }),
  });
}

요약



이전에는 이미지를 얻지 못하고 양식으로 도망 갔지만 잘 작동했습니다.
어쩌면 리플레이 토큰 어느 분락이 된 것 같아

구현할 때는 여러 가지 생각이 들었습니다. .
그룹에 넣고 싶기 때문에 첫 번째 이미지처럼 '이미지 공유'메시지가 있으면 다음 전송 된 이미지에 대해이 프로세스를 수행합니다.

링크들



GoogleAppScript-Drive-File-setSharing



Google Charts Infographics QRcode

좋은 웹페이지 즐겨찾기