10/3(Tue)

今日の生放送

うえば ともふみ

上羽 智文

Schoo 高等教育DX事業プロダクトオーナー

2009年 ヤフー株式会社にデザイナーとして入社。Yahoo!メールやYahoo!カレンダーなど、個人向けサービスのデザイン/開発に従事する。 2012年 「世の中から卒業をなくす」というビジョンに共感し、創業メンバーとしてSchooに参画。以来サービスデザイン、UIデザイン、プロダクト開発を手掛け、初代デザイン部門責任者・toC事業プロダクトオーナーを経て、現在は高等教育DX事業プロダクトオーナーとして従事。

上羽 智文

登壇している授業のカテゴリー・関連タグ

担当のコース

「これ、自動化できないかな?」   日々の業務について、こう感じたことは無いでしょうか? 「何が自動化できるのか」を知っておくことは、日々の業務をハイスピードで進めるための強力な武器となります。 RPA(ロボティック・プロセス・オートメーション=機械による業務自動化)の入り口として、 まずはGoogleスプレッドシートでのテクニックを身に付けましょう。   【こちらもオススメ】 ・こんなに便利!Google Apps Scriptの実践講座 ・Googleスプレッドシートの基礎講座

日々の業務で繰り返されるデータ入力、シートの管理…。 毎回同じように繰り返されるこの作業…自動化できたらもう少し残業減らせるかな…。やりたいとは思っているのに時間がなくて手をつけられていないあのことに使う時間を確保できるかな…。そんなふうに思う人も少なくないはずです。 今回の授業では、業務においてもさまざまなところで使用されているGoogleスプレッドシートを活用して、日常の面倒な作業を効率的に楽に処理するテクニックを学びます。ルーティンワークの自動化、何やら専門知識や難しいスキルが必要なように聞こえますが、実際そうでもありません。 授業を見ながら、試しにその通りにやってみる。仕組みが分かったら自身の業務で使っているファイルでも応用してみる。それだけで、効率化を実感できるはずです。 今回お伝えするテクニックは、活用機会の多いもの、多くの人の実践に役立ちそうなものに厳選してお届けします。「面倒…」が「楽ちん♪」に変わる瞬間をぜひリアルタイムで楽しみながら、テクニックを盗んでいきましょう。 ※第1回は『Googleスプレッドシート”効率化”テクニック』(15分)を生放送で実演したものになります   この授業で学べること ・Googleスプレッドシートの関数を使った時短テクニック (授業内でお伝えするテクニックはMicrosoft Excelでも応用可能です) ・日々のルーティンワークを効率的に、楽に行うための考え方   こんな人にオススメ ・関数はなんとなく理解しているが、日々の業務で活用できておらずもっと活用したい!と思っている方 ・見積書、経費管理表、工数管理表など、毎日のように触れるシートがある方   サンプルデータ 授業で実際に使用したシートです。関数を確認いただけます。 (※条件付き書式・GASは閲覧できませんのでご了承ください) ・営業管理表(サンプル) ・実習シート(閲覧用)

RPA(ロボティック・プロセス・オートメーション)は2017年に爆発的な普及を見せ、現在も広がり続けています。 そんな中「わが社にもRPAを導入したい」と検討している人が多い一方で、メリット・コスト・運用イメージがわかず、なかなか導入に踏み切れていない企業も多く存在します。   本授業では、2019年6月7日に開催される「RPA DIGITAL WORLD TOKYO 2019」のイベント内容を紹介しながら、”RPAの現在を知る” 60分をお届けします。 講師には、RPAの最新情報を届けるメディア「RPA BANK」事業統括兼編集統括の武藤駿輔(むとう・しゅんすけ)先生をお迎えします。

Googleスプレッドシートはどのような事ができるのでしょうか? Googleスプレッドシートを使ったことがない方や、もっと便利に使いたいという方に向けて、実際にシートを触りながら基本的な使用方法について学んでいきます。生放送ではリアルタイムでシートを編集していきます! 今回は「チケット販売管理シート」を題材に、ツールバーやメニュー、よく使う関数を学びます。

第2回のソースコードを追記しました(2020/01/21)   この授業を一言で表すと... 本授業では、普段プログラミングをしない方を対象として、Googleスプレッドシートをもっと便利に使うための簡単なプログラミング、Google Apps Script(通称:GAS)を学びます。   GASを使うとシートやセルの内容を簡単なプログラミングで操作できるようになります。(ちょうどExcelのVBAと同じようなものですね) 一見難しそうに思えますが、少し背伸びをするだけで、これまで手作業でやっていたことが自動化できるようになり、業務効率UPはもちろん、進行管理やデータ管理が楽になります。   ぜひこの機会に、GASでできるいろいろな自動化を体験してみましょう!   この授業で学べること ・Google Apps Scriptを使ってみる ・データからシートを自動で生成する ・データからグラフを自動で生成する ・Googleフォームの投稿を自動でSlackに通知する ・LINEボットを作成し、毎日のデータを自動送信する   こんな人にオススメ ・定期的にデータ集計や分析を行っている、または行いたい方 ・進行管理をしている方

担当の授業一覧 全8授業

スプレッドシートでLINEボットを作成する

第2回 スプレッドシートでLINEボットを作成する(60分)

2020年1月21日放送

前回学んだGoogle Apps Scriptと、LINEのMessaging APIを組み合わせて、LINEのチャットボットを作成します。自動返信用の辞書や、定期的実行など、Googleスプレッドシートならではの機能も活用していきます。 それほど多くないコードで作成できるので、まずはやり方を見て一緒に流れをつかみましょう。(授業後にソースコードを共有します) <内容> ・LINE チャットボットを作成する ・自動返信機能を追加する ・一斉送信機能を追加する   ▼ LINE Messaging API https://developers.line.biz/ja/services/messaging-api/ ▼ LINEボットの画面イメージ   ■授業中に書かれたソースコード // LINE developers のTOKEN // https://developers.line.biz/ var ACCESS_TOKEN = '*********'; // ここにACCESS_TOKENを入れる var sheet = SpreadsheetApp.getActive().getSheetByName('Line') /* *************** 00: 基本 *************** */ // POSTアクセスが来た場合の処理 (今回はBOTに何かしらのアクションをされた場合が該当) function doPost(e) { // イベント(ユーザーからの何かしらのアクション) var event = JSON.parse(e.postData.contents).events[0] // イベントから主要な要素を抽出 var eventType = event.type var userId = event.source.userId /* 1. 友達登録の場合 → ユーザーデータを保存 */ if (eventType == 'follow'){ stockUserData(userId) } /* 2. メッセージ受信の場合 → 応答メッセージを返す */ else { var replyToken = event.replyToken; var userMessage = event.message.text; replyLine(replyToken, userMessage) } } /* *************** 10: 返信系(Reply) *************** */ // Lineに「返信」する function replyLine(replyToken, userMessage){ /* 返答メッセージを生成する */ var dictionary = sheet.getRange("A6:B100").getValues(); var message = "" // userMessage = スクーのミッションは? // dictionary[i][0] = "ミッション" // 辞書から「キーワード」を検索 for(var i=0; i < dictionary.length; i++){ if(userMessage.match(dictionary[i][0])) message = dictionary[i][1] if(message != "") break } // 辞書にあてはまるものがなければ、相槌を打つ if (message == ""){ message = userMessage + "だってにゃ? それはいいにゃ〜!" } // 「応答」メッセージ用のAPI URL var url = 'https://api.line.me/v2/bot/message/reply'; UrlFetchApp.fetch(url, { 'headers': { 'Content-Type': 'application/json; charset=UTF-8', 'Authorization': 'Bearer ' + ACCESS_TOKEN, }, 'method': 'post', 'payload': JSON.stringify({ 'replyToken': replyToken, 'messages': [{ 'type': 'text', 'text': message, }], }), }); return ContentService.createTextOutput(JSON.stringify({'content': 'post ok'})).setMimeType(ContentService.MimeType.JSON); } /* *************** 20: 送信系(Push) *************** */ // 「Line」シートの「A2」のテキストを、全員に送信する function sendStaticMessageToAll(){ var message = sheet.getRange("A2").getValue(); sendMessageToAll(message) } // 登録されている人全員に送信する function sendMessageToAll(message) { // userIdをすべて取得する var sheet = SpreadsheetApp.getActive().getSheetByName('LineUsers') var userIdsArray = sheet.getRange(2, 4, sheet.getLastRow() - 1, 1) // D2:Dx var userIds = userIdsArray.getValues() // [['aaaaa'],['bbbbb'],['ccccc']] // 各userIdに対してメッセージを送信していく for(var i = 0; i < userIds.length; i++) { userId = userIds[i][0] pushLine(message, userId) } } // Lineに「投稿」する function pushLine(message, user_id){ // メッセージ「送信」用のAPI URL var url = 'https://api.line.me/v2/bot/message/push'; UrlFetchApp.fetch(url, { 'headers': { 'Content-Type': 'application/json; charset=UTF-8', 'Authorization': 'Bearer ' + ACCESS_TOKEN, }, 'method': 'post', 'payload': JSON.stringify({ 'to': user_id, 'messages': [{ 'type': 'text', 'text': message, }], }), }); } /* *************** 30: その他の関数 *************** */ /* Line系 */ // ユーザーの情報をLineAPIで取得し、SpreadSheetに保存する function stockUserData(userId){ var url = 'https://api.line.me/v2/bot/profile/' + userId; var response = UrlFetchApp.fetch(url,{ 'headers': { 'Authorization' : 'Bearer ' + ACCESS_TOKEN, } }) var userData = JSON.parse(response) // APIから得られた情報から、要素を抽出 var name = userData.displayName var pictureUrl = userData.pictureUrl var statusMessage = userData.statusMessage // シートに出力する var sheet = SpreadsheetApp.getActive().getSheetByName('LineUsers') var range = sheet.getRange(sheet.getLastRow() + 1, 2, 1, 3) // Bx:Dx range.setValues([[name, pictureUrl, userId]]) }