Quantcast
Channel: いつも隣にITのお仕事
Viewing all 2126 articles
Browse latest View live

App Makerでフォームからデータベースとしてのスプレッドシートを更新する方法

$
0
0
cells

photo credit: andrey.pehota via photopin (license)

みなさん、こんにちは!
タカハシ(@ntakahashi0505)です。

App Makerでスプレッドシートをデータベースにしたアプリの作り方をお伝えしています。

前回の記事はこちらです。

App Makerでフォーム上のデータを取得してサーバースクリプトに渡す方法
App Makerでスプレッドシートをデータベースにしたアプリの作り方をお伝えしています。今回は、App Makerでフォーム上のLabelやTextBoxのデータを取得してサーバースクリプトに渡す方法です。

App Makerのフォームのデータをサーバースクリプトに渡す方法をお伝えしました。

あとは、そのサーバースクリプト内でスプレッドシートを操作して更新すれば…

ということで、App Makerでフォームからデータベースとしてのスプレッドシートを更新する方法です。

では、行ってみましょう!

前回までのおさらい

まず、App Makerのデータベースとして使用するスプレッドシートがこちらです。

スプレッドシートの従業員データ

これらのデータをApp Makerの元データとして反映するしつつ、App Makerのフォームから更新作業を行えるようにしたいわけですね。

スプレッドシートの操作なので、それはサーバースクリプトで行いますね。

こちらの関数setRecordです。

function setRecord(row, values) {

  var id = '*****スプレッドシートのID*****';
  var sheet = SpreadsheetApp.openById(id).getSheets()[0];
    
  sheet.getRange(row, 1, 1, values.length).setValues([values]);
}

指定のスプレッドシートを開いて、その一番左のシートのデータについて、row番目のレコードを変数valuesで受け取った配列の値に書き換えるというものです。

そして、この関数setRecordを呼び出す、クライアントスクリプト側の関数updateRecordがこちらです。

function updateRecord() {
  var row = Number(app.pages.EditPage.descendants.FieldIndex.text) + 1;
  var values = [];
  values.push(app.pages.EditPage.descendants.TextBoxName.value);
  values.push(app.pages.EditPage.descendants.TextBoxEmail.value);
  values.push(app.pages.EditPage.descendants.TextBoxHireDate.value);
  values.push(app.pages.EditPage.descendants.TextBoxActive.value);
 
  google.script.run.setValues(row, values);
}

フォームに現在表示されているテキストボックスの内容を配列化して、その行番号とともに、サーバースクリプトの関数setValuesを呼び出して渡すというものです。

あとは、この関数updateRecordを起動するだけですね…!

ボタンクリックでスクリプトを呼び出しデータソースを更新する

では、ボタンクリックでクライアントスクリプトを呼び出すように設定していきましょう。

ボタンにonClickイベントを設定する

ButtonウィジェットにonClickイベントを設定すればよかったですね。

まず、フォームの「UPDATE」ボタンを選択し、右側に表示されたプロパティエディタの「onClick」イベントを設定します。

当初は「None」とありますので、そこをクリックするとスクリプトを入力できるようになります。

App Makerでボタンにクリックイベントを設定する
010

以下のスクリプトを入力し、「DONE」をクリックすればOKです。

updateRecord();
widget.datasource.load();

スクリプトの1行目は、クライアントスクリプトの関数updateRecordを呼び出すというものですね。

その先、サーバースクリプトが呼び出されて、スプレッドシートが更新されるはずです。

しかし、2行目は…見慣れないですね?

データソースを再読み込みする

2行目の処理は、現在のウィジェットのデータソースを読み込むというものです。

ほら、データベースが更新されたわけですから、App Maker側のデータソースも更新しないとですもんね。

では、そのステートメントを解説していきましょう。

まずwidgetパラメータは、現在のウィジェットを参照します。

widget

今回の場合は、「UPDATE」ボタン、すなわちButtonウィジェット「ButtonHello」が取得できます。

続いて、datasourceプロパティです。

以下のように任意のウィジェットについてdatasourceプロパティを使用して、そのデータソースを取得します。

Widgetウィジェット.datasource

今回の場合、Buttonウィジェットなのでデータソースを設定したっけ?…となりますが、フォームのデータソースは、フォーム上に配置している子孫であるウィジェットにも継承します。

そして、以前以下の記事で行ったように、フォームにはデータソース「EmployeeData」を設定していました。

App Makerで新しいページとフォームウィジェットを配置する方法
App Makerでスプレッドシートをデータベースにしたアプリの作り方についてシリーズでお伝えしています。今回はApp Makerで新しいページとフォームウィジェットを配置する方法をお伝えします。

最後、以下のloadメソッドで、データソースの読み込みを行うというわけですね。

DataSourceオブジェクト.load()

App Makerからスプレッドシートの更新を確認する

では、App Makerからスプレッドシートを更新する動作確認をしていきましょう。

PREVIEW画面を開いて、フォームにいろいろと入力して「UPDATE」ボタンをクリックします。

App Makerのフォームでデータを入力してデータを更新する

各フィールドの値は以下の通りとしました。

  • Index: 2
  • Name: Tim
  • Email: tim@example.com
  • HireDate: 2019-02-08
  • Active: False

スプレッドシートを確認すると、以下のように更新できていることが確認できます。

App Makerのフォームボタンからスプレッドシートを更新した

まとめ

以上、App Makerでフォームからデータベースとしてのスプレッドシートを更新する方法をお伝えしました。

これで、ようやく目的は達成ですね。

ここまで少し長かったですが、App Makerの全体感とモデル、ページ、ウィジェット、クライアントスクリプト、サーバースクリプトといった各部の役割をだいたい理解できたのではないでしょうか。

次回は、さらに進めて、データの追加ができるようにしていきたいと思います。

どうぞお楽しみに!

連載目次:App Makerでスプレッドシートをデータベースとして使う

Googleが提供する社内アプリケーションを簡単に構築できるプラットフォームApp Maker。このシリーズでは、スプレッドシートをデータベースとして簡単なアプリケーションを作る方法をお伝えします。
  1. App Makerでスプレッドシートをベースにモデルを作成する方法
  2. App Makerでクエリスクリプトでスプレッドシートのデータを取得する方法
  3. App Makerでスプレッドシートからデータを取得するクエリスクリプトを丁寧に解説
  4. App Makerで新しいページとフォームウィジェットを配置する方法
  5. App Makerでテーブル行をクリックしたらフォームを表示するイベントを設定する方法
  6. App Makerでボタンウィジェットを設置してクリックで動作させる方法
  7. App Makerでボタンクリックで独自のスクリプトを動作させる方法
  8. App Makerでクライアントスクリプトからサーバースクリプトを呼び出す方法
  9. App Makerのボタンクリックでスプレッドシートにアクセスする方法
  10. App MakerでフォームウィジェットでLabelウィジェットをTextBoxウィジェットに差し替える
  11. App Makerでフォーム上のデータを取得してサーバースクリプトに渡す方法

【はじめてのfreeeAPI】GASとfreeeつなぐ!連携認証の手順を一から紹介します

$
0
0

こんにちは!ITライターのもり(@moripro3)です!

クラウド会計ソフトfreeeのAPIを使って経理業務を自動化する初心者向けシリーズ「はじめてのfreeeAPI」をお届けしています。

前回の記事では、最初の一歩としてfreeeAPIとは何か?GAS×freeeAPIで何ができるのか?をお伝えしました。

【はじめてのfreeeAPI】GAS×freeeAPIで経理業務を自動化する最初の一歩!
GoogleAppsScriptでクラウド会計ソフトfreeeのAPIを操作するシリーズ。freee APIとは何か?GAS×freee APIで何ができるのか?を紹介しています。freeeAPIを活用することで手作業の自動化・外部アプリケーションとの連携が可能になります。

早くfreeeAPIを使ってみたいとワクワクしている皆さま、少々お待ちくださいませ。これを使うためには、GASとfreeeを繋ぐための設定が必要なのです。

そこで今回の記事では「GASとfreeeを連携する手順」を一からやさしく紹介していきます。

下記図の赤枠部分、スプレッドシート(GAS)とfreeeをつなぐ「橋」を構築するイメージです。

GASとfreeeの連携イメージ

所用時間は20~30分ほどですので、実際に操作してみながらお付き合いください。
少しばかり時間はかかりますが、この記事で連携作業を済ませてしまえば、今後色々なfreeeの作業を自動化できますよ!

画面キャプチャ・説明盛りだくさんでお届けしますので、「”今この瞬間のひと手間” が ”将来の自分” をラクにする」と考えて頑張っていきましょう!

(この記事はfreee株式会社さまとのコラボ企画です。シリーズを通して、皆さんの働くの価値を上げられるよう皆さまをサポートしていきます!)

(前回のおさらい)freee APIとは

freee APIとは、GASなどのプログラミング言語でfreeeを操作する仕組みです。

「外部のプログラム」から直接「freeeの機能」を操作する出入口のようなイメージで、CSVファイルを経由しなくても、直接スプレッドシートのデータをやりとりできます。

GASを使用してスプレッドシートとfreeeを連携する
引用:【freee API】GASを用いてGoogleスプレッドシートと連携する

また、Gmail・カレンダーなどのGoogleサービスや、Chatworkなどの外部アプリケーションとの連携ができることもお伝えしました。

freeeと外部アプリケーションの連携イメージ

GASとfreeeを連携する

それではスプレッドシート(GAS)とfreeeを連携していきましょう。

大きく下記の2ステップで進めていきます。

  1. GASとfreeeを連携させるための「freeeマイアプリ(*)」を作成する
  2. freeeアカウントと「freeeマイアプリ」を連携認証する

(*)freeeマイアプリとは、freeeアプリストアに公開されているアプリではなく、freeeアプリストアで自分で作成するオリジナルアプリのことです。

通常は、私たち人間がfreeeの画面を操作して、freeeのデータにアクセスしています。

freeeの画面を操作する

「人間が画面を操作する」代わりに、「GASがfreeeAPIを操作する」ことで、freeeのデータにアクセスします。GASがfreeeAPIを操作する(連携する)ために必要なのが「freeeマイアプリ」です。

freeeマイアプリでGASとfreeeをつなぐ

それでは事前準備から進めましょう。

(事前準備)スプレッドシートの用意

まず、freeeと連携させるためのスプレッドシートを用意します。経理業務などでデータを蓄積しているスプレッドシートがあれば、それを使っても大丈夫です。

スクリプト単体でもよいですが、実務では「スプレッドシートのデータをfreeeとやりとりする」ことを想定するため、ここではコンテナバインドスクリプトを用意します。

※当シリーズは、GASを少し触ったことがある初心者を対象としております。スクリプトエディタの操作が初めての方は、こちらの記事を併せてご覧ください。

【初心者向けGAS】本当の最初の一歩!スクリプトエディタでプロジェクトを開く
超初心者向けにGoogle Apps Scriptのプログラミングの一通りの流れと書き方について学ぶシリーズです。今回は、その最初の一歩としてスプレッドシートからスクリプトエディタを開く手順をお伝えします。

 

スプレッドシートからスクリプトエディタを開きます。

スクリプトエディタを開く

スクリプトエディタを開いたら、「ファイル→プロジェクトのプロパティ」で「スクリプトID」を確認します。

プロジェクトプロパティを開く

スクリプトIDを確認する

スクリプトIDとは、GoogleAppsの各スクリプトに一意に定められているIDです。たとえばメールアドレスのように、世界中で重複することなくスクリプトごとに割り振られています。

冒頭で、freeeマイアプリは「GASとfreeeを連携させるためのアプリ」と紹介しました。

そのため、freeeマイアプリを作成する時に「スクリプトID = xxxxxxのスクリプトと連携してね」と登録する必要があります。

この登録作業は後ほど行いますので、スクリプトIDを確認したら、メモ帳などにコピー貼り付けしておきましょう。

まだコードは書かないので、エディタは空のままでよいです。スクリプトエディタは後続の作業で使うので、そのまま開いておきましょう。

以上が事前準備です。

【ステップ1】freeeマイアプリを作成

最初のステップ、「GASとfreeeを連携するためのアプリ」を作成します。

アプリストアへのアクセスと事業所選択

お持ちのfreeeアカウント、もしくは、ソーシャル連携でfreeeにログインします。(普段のログイン方法です)

freeeにログインする

freeeにログイン済みの状態で、freeeアプリストアの開発者ページにアクセスします。

1つのfreeeアカウントで複数の事業所を管理している方は、ログイン中の事業所を確認します。事業所を切り替える場合は、赤枠部分をクリックします。

freeeログイン中の事業所を確認

切り替える事業所を選択します。

freee事業所の切り替え

マイアプリの作成と基本情報登録

画面右上の「アプリ管理」をクリックします。

freeeアプリ管理

「開発アプリ一覧」右上の「+新規追加」をクリックします(お使いの環境によっては、この画面が出ないこともあります)

freeeアプリの新規作成

「新しいアプリの作成」画面にて、下記①~④の順番で基本情報を登録します。

  • ①アプリ名を入力
  • ②概要を入力
  • ③利用規約を読んで同意
  • ④作成をクリック

アプリ名と概要の文言は後から変更できるので、あまり悩まず登録しましょう。

freeeアプリの基本情報を登録する

コールバックURLの登録

つづいて、freeeアプリに「コールバックURL」を登録します。

コールバックとは、

  • コール(呼び出す)
  • バック(戻る)

です。

コールバックURLとは、「freeeへログイン認証できたら、ここに返ってきてね」というURLです。

GASでfreeeにログインしたら、その応答は自分(GAS)に返してほしいので、URLにGASのスクリプトを指定します。そこで、さきほど確認したスクリプトIDが必要になるのです。

freeeアプリの「コールバックURL」の項目に初期値がセットされているので、値を上書きします。

freeeアプリのコールバックURLとは

コールバックURLの形式がこちらです。スクリプトIDの部分に、事前準備で確認したスクリプトIDをあてはめましょう。

https://script.google.com/macros/d/スクリプトID/usercallback
  • ①コールバックURLを入力
  • ②下書き保存をクリック

freeeアプリにコールバックURLを設定する

【ステップ2】freeeアカウントとfreeeマイアプリの連携

ここまでで、freeeマイアプリの作成が終わり、連携する準備が整いました。

次のステップ「freeeアカウントとfreeeマイアプリの連携」です。

freeeアカウントとfreeeアプリを連携する

OAuth認証の仕組み

GASとfreeeアプリを連携させるために、OAuth(オーオース)という認証の仕組みを使います。

OAuthとは、「認可されたアプリしかAPIを操作できないよう、APIを守る仕組み」です。

他人が作成したfreeeアプリによって、自分の事業所データが操作されたら困りますよね。この認証の仕組みを使用することで、悪意あるアプリによって勝手に操作されないよう守ってくれるのです。

OAuthの仕組みは非常に難しいので、詳しく理解できなくても問題ありません。興味のある方は、こちら(一番分かりやすい OAuth の説明)をご覧になってみてください。

ここでは、OAuth2 for Apps Scriptというライブラリを使用します。ライブラリとは、難しい処理を簡単に実現できる仕組みです。詳しくはこちらの記事をご参照ください。

【初心者向けGAS】面倒なことはライブラリに任せよう!その概要と追加の方法
初心者向けGoogle Apps ScriptのシリーズとしてチャットワークのBotの作り方についてお伝えしています。今回はライブラリとは何か、またその追加の仕方についてお伝えしていきます。

OAuth2ライブラリの登録

それではライブラリの登録をしていきましょう。スクリプトエディタで「リソース→ライブラリ」を選択します。

ライブラリの登録

「ライブラリを追加」の入力フィールドに、OAuth2 for Apps Scriptライブラリのプロジェクトキーを入力し、追加をクリックします。

1B7FSrk5Zi6L1rSxxTDgDEUsPzlukDsi4KGuTMorsTQHhGBzBkMun4iDF

ライブラリを追加する

  • ①バージョンを選択→ライブラリを追加する時点での最新バージョン(最も大きい数字)を選択
  • ②保存

ライブラリのバージョンを選択して保存

認証用のGASコード

ここから、スクリプトエディタにコードを書いていきます。デフォルトで存在するmyFunction関数は不要なので削除しておきましょう。

GASとfreeeアプリを連携する作業は、画面上の操作ではなく、GASによって行います。その認証用コードがこちらです。

/*
参照ライブラリ
title OAuth2
project_key 1B7FSrk5Zi6L1rSxxTDgDEUsPzlukDsi4KGuTMorsTQHhGBzBkMun4iDF
*/
 
//連携アプリ情報
var Client_ID = 'xxxxxxxxxxxxxxxxxxxx';
var Client_Secret = 'xxxxxxxxxxxxxxxxxxxx';

function Auth() {
  
  //freeeAPIのサービスを取得
  var service = getService();
  
  //スクリプトへのアクセスを許可する認証URLを取得
  var authUrl = service.getAuthorizationUrl();
  
  Logger.log(authUrl);//取得した認証用URLをログ出力
  
}

//freeeAPIのサービスを取得する関数
function getService() {
  return OAuth2.createService('freee')
      .setAuthorizationBaseUrl('https://accounts.secure.freee.co.jp/public_api/authorize')
      .setTokenUrl('https://accounts.secure.freee.co.jp/public_api/token')
      .setClientId(Client_ID)
      .setClientSecret(Client_Secret)
      .setCallbackFunction('authCallback')
      .setPropertyStore(PropertiesService.getUserProperties())
}
 
//認証コールバック関数
function authCallback(request) {
  Logger.log(request);
  var service = getService();
  var isAuthorized = service.handleCallback(request);
  if (isAuthorized) {
    return HtmlService.createHtmlOutput('認証に成功しました。タブを閉じてください。');
  } else {
    return HtmlService.createHtmlOutput('認証に失敗しました。');
  };
}

コードの8,9行目に、freeeアプリで発行されたClient IDとClientSecretを設定します。文字列として認識させるため、シングルクォートで囲むのをお忘れなく!

var Client_ID = 'freeeアプリのClient ID'
var Client_Secret = 'freeeアプリのClientSecret'

 

IDとSecretの設定

※freeeアプリストアのClient IDとClientSecretは、下記の操作でコピーできます。

freeeアプリストアのIDとSecretをコピーする

Client IDとClientSecretは、GASでfreeeに接続するためのIDとパスワードです。第三者に知られないよう気をつけましょう。

認証の実行

スクリプトに3つの関数が存在します。この中の関数「Auth」を実行します。下記①~③の手順でAuth関数を選択しましょう。

GASで関数を選択して実行する

ここで登場する「承認が必要です」のメッセージは、freee連携に関するものではありません。GASユーザの皆さまお馴染みのやつです。通常どおり、許可しましょう。

GAS承認が必要です

関数の実行が完了すると、認証用のURLが発行されます。Ctrl + Enter でログを確認します。

https://~ からはじまるURLが「認証URL」です。赤枠部全体をコピーしましょう。

ログに認証URLが出力される

Chrome等のブラウザを開き、URL入力欄に認証URLを貼り付けてアクセスします。

認証URLにアクセスする

「アプリ連携の開始」という画面が登場します。

通常は、私たち人間が「freeeアカウント」を使用してfreeeにログインし、画面を操作してデータを登録したり、出力します。

ここでは、「freeeアプリが、あなたの代わりにfreeeアカウントを使ってログインし、freeeのデータを操作しますが、よろしいですか?」と聞かれているのです。もちろんOKなので「許可する」をクリックします。

freeeアプリ連携の開始を許可する

新しいタブが登場し、「認証に成功しました」のメッセージが登場したら完了です!

freeeアプリの認証成功画面

以上の作業で、freeeマイアプリでGASとfreeeをつなぐ一連の流れが完成しました。

freeeマイアプリでGASとfreeeをつなぐ

おつかれさまでした!

まとめ

連載「はじめてのfreee API」の第2回目では、GASとfreeeを連携させる手順を紹介しました。

今回は「freeeマイアプリ」がポイントでしたね。「freeeマイアプリとは、GASとfreeeをつなぐためのアプリである」くらいのふんわりとした理解で大丈夫です。

  1. GASとfreeeを連携させるための「freeeマイアプリ」を作成する
  2. GASと「freeeマイアプリ」を連携認証させる

さぁ、これでGASでfreeeAPIを操作するための準備が整いました。

次回は、いよいよGASでコードを書いてfreeeのデータを取得してみますよ!

どうぞお楽しみに!

連載目次:【GAS初心者向け】はじめてのfreeeAPI

GoogleAppsScriptを使用して「クラウド会計ソフトfreee」のAPIを操作する初心者向けシリーズ。GAS × freee APIで何ができるのか?連携方法は?を紹介しています。実際にfreee APIを操作してデータの取得・更新をしてみましょう。

  1. 【はじめてのfreeeAPI】GAS×freeeAPIで経理業務を自動化する最初の一歩!
  2. 【はじめてのfreeeAPI】GASとfreeeつなぐ!連携認証の手順を一から紹介します

ノンプログラマーがなぜAPIを知り、使いこなす必要があるのか?

$
0
0
api

photo credit: mbeo Arnie | Hive via photopin (license)

みなさん、こんにちは!
タカハシ(@ntakahashi0505)です。

「ノンプログラマーのためのスキルアップ研究会」は、ノンプログラマーがプログラミングをはじめとするITスキルを学び合うコミュニティです。

VBAやGASなどのプログラム言語はマスターすればそれだけでも様々なことが実現できますが、APIを通して他サービスと連携をさせることで、さらにその活用の幅を広げることができます。

先日開催された、ノンプロ研の定例会「ノンプログラマーのためのAPIとその活用」では、その中で特にAPIに力を入れていらっしゃる企業さまから、freee株式会社の前村さん、Chatwork株式会社の小西さんにお越しいただきまして、お話をうかがうことができました。

この記事はそのレポートになりますよ!

ちなみに当日の様子は以下、Togetterのツイートまとめもご覧くださいませ。

ノンプロ研定例会Vol.19「ノンプログラマーのためのAPIとその活用」
VBAやGASなどのプログラム言語はマスターすればそれだけでも様々なことが実現できますが、APIを通して他サービスと連携をさせることで、さらにその活用の幅を広げることができます。  今回は、その中..

では、行ってみましょう!

freee APIのご紹介

ノンプロ研定例会 freee株式会社前村さん

「スモールビジネスを、世界の主役に。」をミッションとして、会計・人事労務・会社設立などバックオフィス業務をサポートするクラウドサービスを展開されているfreeeさん。

デリケートなデータを扱うケースが多いとは想定されるのですが、ものすごくAPIに力を入れていらっしゃる様子…

弊ブログでも、ノンプログラマー向けにGAS×freeeAPIをテーマとしたタイアップ記事を展開させていただいております。

【はじめてのfreeeAPI】GAS×freeeAPIで経理業務を自動化する最初の一歩!
GoogleAppsScriptでクラウド会計ソフトfreeeのAPIを操作するシリーズ。freee APIとは何か?GAS×freee APIで何ができるのか?を紹介しています。freeeAPIを活用することで手作業の自動化・外部アプリケーションとの連携が可能になります。

ノンプロ研でAPIを使いこなしている方はそこまで多くない印象ですが、freeeはバックオフィス系のサービスですから、そのAPIはノンプログラマーが触ることが多いだろう…、きっと良い話が聴けるに違いない…!

ということで、今回前村さんにお声がけさせていただきまして、ノンプロ研でのご登壇が実現しました…!

APIとは

たいへん恐縮なのですが、APIとはなにか、その説明も本当にわかりやすくいただきました。

例えばfreeeでいうと、クラウドサービスで自動連携しているとはいえ、例えば

  • 取引の登録
  • 勘定科目の登録
  • 請求書の登録
  • 試算表の閲覧や出力
  • 仕訳帳の閲覧や出力

といった作業は、手作業になります。

これを、GASやVBAで「APIを叩く」というプログラムを書くことで、プログラムが代わりに実行をしてくれるようになるわけです。

「APIを叩く」には、freeeさん側で「こういうふうに叩いてね」という受け皿を準備していただく必要があるので、それをものすごく熱心に準備されていて、多くの人がたくさんのことをできるようにされているというわけです。

freee APIの事例

freee APIの事例として、以下のようなサービスやアプリについて解説いただきました。

  • POSレジ(Airレジ、Squareなど)
  • NPO法人の会計を支援するアプリNport
  • 外貨建取引管理アプリ
  • Googleスプレッドシートアドオン

他社のクラウドサービスとの連携も推進されますし、freeeのメインストリームの機能としては狭いニーズも、APIを使って解決できたりするわけですね。

各社がAPIを使用してさまざまなアプリケーションを作ることができるのですが、作成したアプリケーションを公開するfreeeアプリストアがあるので、そこで公開をすることもできます。

freee アプリストア | freee株式会社
会計freee、人事労務freee に様々なアプリを連携し、バックオフィス業務全体をfreeeで効率化しましょう。レジ・決済サービス・EC・勤怠・請求管理などの様々な業務ソフトと連携可能です。

公開の場があるので、作ったものを広めることができたり、他者のアプリを活用したり参考にできたりしますよね。

なぜfreeeはAPIに注力するのか

そうです。これですよ。

なぜfreeeはAPIに注力するのか?

この問については、以下のような4点をお話いただきました。

  1. freeeではカバーできない課題を解決する
  2. 競争環境に晒されて、質が上がる
  3. ノンプログラマーでもZapierやIFTTTなどを通して効率化を実現できる
  4. 「このサービスと連携できるから」と選択の意思決定の要因となる

まとめると、freeeさんの価値基準である「ユーザーにとって本質的(マジ)で価値ある」=「マジカチ」に集約されます。

つまり、便利でオープンなAPIを提供したほうがユーザーにとって価値があるということなんですよね。

それは、間違いなくそうですよね。

微力ながら、弊社でもお手伝いできれば嬉しいです…!

Chatwork APIのご紹介

ノンプロ研定例会 Chatwork株式会社小西さん

ノンプロ研でChatworkさんにご登壇いただくなんて…

個人的に、ずっと大好きなサービスだったので、コミュニティ運営者冥利に尽きるな…と思います。

ノンプロ研的には、Slackユーザーも多いのですが、日本発ながらも22.2万社が導入という絶大な支持を受けていらっしゃるという点、そしてAPIを力入れていらっしゃるという点…きっと学びがあるに違いない!

Chatworkとは?なぜAPIに力を入れるのか?

Chatworkは言わずと知れた、国産のビジネスチャットサービスですね。

メールや電話に代わるビジネスチャットとして、大小様々な企業に活用いただいています。

Slackとの比較でいうと、メッセージから簡単にタスクを作れるタスク管理が特徴的な機能かも知れませんね。

Chatworkとして目指していることをお話いただいたのですが、それは「チャットを起点に、チャットを超えて、事業を拡大させる」ということなんですね。

でも…

  • チャットだけでできることは限られている
  • Chatwork社だけでできることは限られている

という事実がありますよ、と。

そのために電話代行やアシスタント業務代行などの業務支援サービスを提供されていたり、今回のテーマであるAPIを提供されているとのこと。

なるほど、目からウロコっすね。

Chatwork APIとは?またその事例

Chatwork APIを使用することでできること、大まかに言うと以下の3つ。

  1. 通知
  2. 問い合わせ(情報の送信&取得)
  3. データの書き込み

そして、その8~9割くらいは「通知」とのことです。

これは、確かにそうですね。実装も簡単ですしね。

弊ブログでも紹介させていただいてますので、ぜひ皆さんトライしていただきたいですね…!

【初心者向けGAS】チャットワークのマイチャットにメッセージを送る最も簡単な例
初心者向けGoogle Apps Scriptのシリーズとして、チャットワークのBotを作成する方法をお伝えしています。今回は、超簡単な例としてマイチャットにメッセージを送る方法と、APIトークンの取得の方法です。

まとめ

さて、ノンプロ研定例会「ノンプログラマーのためのAPIとその活用」のレポートをお送りしました。

「なぜ、APIに力を入れるのか?」この回答が2社さまで共通のところが多かったのが印象的です。

「自社サービスだけでは提供できないことがある」

あ、どちらもすごい会社さんなんですよ。

でも、本来やるべきことにできる限りフォーカスして、価値を最大化したいという現れなのだなと思います。

これは、VBAやGASの使い所の考え方にも近いな~と思ってまして、たいへん学びになりました。

ご登壇ありがとうございました!

「ノンプログラマーのためのスキルアップ研究会」について

コミュニティ「ノンプログラマーのためのスキルアップ研究会」では、毎月の定例会や勉強会、Slackでのやり取りを通して、皆さんのプログラミング学習の質やモチベーションを高めるための活動をしています。 過去の活動については、以下のページをご覧ください。
コミュニティ「ノンプログラマーのためのスキルアップ研究会」の活動レポートまとめ
コミュニティ「ノンプログラマーのためのスキルアップ研究会」(略して「ノンプロ研」)。このページはその活動レポートまとめページです。コミュニティ活動の一気読みをされたい方、ぜひご活用くださいませ。
ぜひ、皆様のご参加をお待ちしております!
コミュニティ「ノンプログラマーのためのスキルアップ研究会」についてのお知らせ #ノンプロ研
ノンプログラマーがVBA・GAS・Pythonなどのプログラミングを学ぶコミュニティ「ノンプログラマーのためのスキルアップ研究会」が絶賛活動中です!本ページはコミュニティの情報発信をしていく特集ページです。

【Outlook VBA】CreateItemFromTemplateメソッドでメールの定型文をワンクリックで呼び出す

$
0
0

createitemfromtemplate,eyecatch

皆様こんにちは、ノグチです。

皆様はOutlookで定型文が使えること、ご存知でしょうか。

定型文を呼び出すまでに数ステップメニューを辿る必要がありますので、便利なのに意外と知っている方は少ないような気がします。

日報や出欠確認、出社連絡など、頻繁に送るようなメールならテンプレートを作っておいて、メール送信の手間はできるだけ省きたいですよね。

ということで今回は、Outlookで定型文を便利に使う方法をご紹介します。

さらに、この定型文をVBAを使ってワンクリックで呼び出す方法も、ご紹介していきますよ!

定型文の登録方法

定型文の内容を入力する

では早速、メールの定型文を登録してみましょう。

まずは、「新しいメール」をクリックして、メールの作成画面を開きます。

そして、作成したい定型文をメール画面に入力します。

もしも送信先や件名も固定なら、ここで入力してしまいましょう。

こんな感じです。

定型文を保存する

定型文の内容を入力し終えたら、「ファイル」から「名前を付けて保存」をクリックします。定型文保存,名前を付けて保存

するとダイアログが開くので、ダイアログの「ファイルの種類」から「Outlookテンプレート(*.oft)」を選択します。

定型文登録,ファイル保存ダイアログ

定型文に名前を付けて、「保存」をクリックすれば、定型文の登録が完了です。

登録した定型文を呼び出して使う

それでは、登録した定型文メールを呼び出してみましょう。

Outlookのツールバーで、「新しいアイテム」>「その他のアイテム」>「フォームの選択」の順にクリックします。

定型文,手動,呼び出しすると、「フォームの選択」という画面が開きますので、画面上部にある「フォルダーの場所」から「ファイル システム内のユーザーテンプレート」を選択します。

定型文,呼び出し,ダイアログ

すると、先ほど登録した定型文の名称が表示されるので、その名称を選択して「開く」をクリックすれば、先ほど登録したメールの定型文を呼び出すことができますよ。

VBAで定型文を呼び出す

ここまで、手動での定型文の呼び出し方法をご紹介しました。

定型文を登録しておけば、メール送信の手間はぐんと減りますよね。

でも、上の手順を見て、こう思いませんでしたか?

「クリック数多い!」

定型文を呼び出すために、ツールバーから何度クリックしたでしょう?

折角の定型文、どうせならワンクリックで使いたくありませんか?

そこでOutlook VBAの出番です!

VBAを使えば、定型文だってワンクリックで呼び出すことができますよ!

CreateItemFromTemplateメソッドで定型文のMailItemオブジェクトを取得する

登録済みの定型文を操作するには、定型のMailItemオブジェクトを取得する必要があります。

ApplicationオブジェクトのCreateItemFromTemplateメソッドは、パラメータに定型文のフルパスを文字列型で指定することによって、定型文のアイテムオブジェクトを返してくれます。

記述方法はこちら。

Applicationオブジェクト.CreateItemFromTemplate(呼び出したい定型文のフルパス)

今回呼び出したいのはメールの定型文なので、パラメータに定型文メールのフルパスを指定すれば、定型文メールのMailItemオブジェクトを返してくれるという訳です。

ちなみに、記述方法冒頭の「Applicationオブジェクト」の部分は省略可能です。

定型文のフルパスを調べる方法

定型文のフルパスがわからない!という場合には、定型文を手動で呼び出す画面でフルパスを調べることができますよ。

定型文,フルパスを調べる

定型文が保存してあるフォルダのパスが表示されているので、こちらのフォルダパスと定型文のファイル名をくっつければ、定型文のフルパスがわかります。

ワンクリックで定型文を呼び出すコード

それでは、CreateItemFromTemplateメソッドで、定型文をワンクリックで呼び出してみましょう。

コードはこちら。

Sub Create_Form_Template()
Dim objItem As Object

Set objItem = CreateItemFromTemplate("呼び出したい定型文のフルパス.oft")

objItem.Display

End Sub

コードの最後に、Displayメソッドがありますね。

このDisplayメソッドを入れないと、せっかく取得した定型文のMailItemオブジェクトの内容をメール画面で開くことができませんので、忘れずに入れておいてくださいね。

また、定型文の内容を編集する必要が無く、定型文に登録した内容のまま送信してもよいならば、DisplayメソッドをSendメソッドに置き換えて、ワンクリックで送信までやってしまってもよいでしょう。

上のコードを実行すると…

はい、この通り登録済みの定型文を呼び出すことができました!

定型文,呼び出し

メニューバーにマクロをセットしておく

もちろん、上のコードをメニューバーにもセットしておきましょう。

コチラの記事でご紹介しているように、メニューバーにマクロをセットしておきます。

【Outlook VBA】Replyメソッドでメールにワンクリックで返信する方法
Outlook VBAで、今開いているメールにワンクリックで定型文の返信メールを送信する方法をご紹介しています。特別な文章を書くまでもない、でも返信しないのは…という場合に、「了解しました。」などの定型文を送信できるようにしておけば、ワンクリックで返信できますよ。

メール,マクロ,メニューセット

これで、ワンクリックで定型文を呼び出すことができますよ!

最後に

今回は、Outlookの定型文の登録方法と、手動での定型文呼び出しVBAを使ったワンクリックで定型文を呼び出す方法をご紹介しました。

同じ内容のメールを何度も送ることが分かっているのなら、定型文に登録してしまえば楽にメールが送信できますよね。

VBAを使えば、そのメール送信作業が更に楽になりますよ!

それでは、最後までお読みいただきありがとうございました!

STORES.jpをコミュニティの決済として使用する際の3つのポイント

$
0
0

ノンプロ研ご購入ありがとうございます

みなさん、こんにちは!
タカハシ(@ntakahashi0505)です。

コミュニティ「ノンプログラマーのためのスキルアップ研究会」ですが、これまで使用していた決済サービスであるpaymo bizの終了に伴いまして、STORES.jpへのお引越しを決めました。

以下の記事をお伝えしている通りですね。

コミュニティ向け月額決済サービスまとめとSTORES.jpに決めた理由
コミュニティ「ノンプログラマーのためのスキルアップ研究会」で使用していた決済サービスpaymo bizが終了になります。代替としての月額決済サービスのまとめと、STORES.jpに決めた理由についてお伝えします。

切り替えの開始が6/13で、本日が6/23ですから、ちょうど10日間くらいですね。

しかし、皆さん順調にお引越しをいただいている様子で、少しホッとしております。

まだ始めたばかりではあるのですが、STORES.jpをコミュニティ向けに活用する際に、いくつかポイントがあるかと思いましたので、記事としてまとめました。

ということで、STORES.jpをコミュニティで使用する際の3つのポイントです。

では、行ってみましょう!

STORES.jpは通販メインのサービス

まず、そもそもとして、STORES.jpはネットショップを開設するためのサービスです。

ECつまり通販をされる事業者の皆さんのために、ページ制作、決済、配送管理、顧客管理、マーケティングなどの機能が提供されています。

なので、サービスとしてコミュニティ運営に、バッチリ100%マッチしているというわけではないんですね。

むしろ、「通販の機能を上手に使えばコミュニティ運営にも十分使えるよ」というニュアンスです。

これはpaymo bizでも同じなのですが、STORES.jpのほうが(BASEもそうですが)より通販色が強いな…という印象はありますね。

まずはそれが前提としてあるので、コミュニティ運営で使うには、少しの工夫と割り切りが必要です。

STORES.jpをコミュニティで使用するための3つの設定

「定期便」による決済のタイミング

STORESで、継続課金をするには「定期便」という機能を使います。

これがあるので、月額課金が実現できるわけですね。

「機能を追加」から以下のように「定期便」をONにすることで、使用することができるようになります。

STORES.jpの機能追加で定期便をONにする

サイクルは以下の5種類から選べます。

  • 毎週
  • 隔週
  • 1ヶ月毎
  • 2ヶ月毎
  • 3ヶ月毎

なんか、いろいろな企画できそうですね…

「アイテム追加」の「定期便」を選択すると、下記のようにサイクルを選択できるようになります。

STORES.jpの定期便のサイクルを選択

ノンプロ研もそうですが、コミュニティでは1ヶ月サイクルのことが多いと思います。その場合、決済のタイミングは購入日そして以降毎月同日になります。

paymo bizでは、毎月1日決済だったので、その決済タイミングの変更について、詳しく説明する資料を作成しました。

STORES.jpの決済サイクルのほうが、損を気にせずいつでも入会できていいかなと思います。

発送完了メールを停止する

STORESはもともと物販をベースにしているので、物販関連の機能が満載です。

その中で、「発送完了メール」というのがあります。

ECショップであれば、オーダーに対して商品を発送したら、その旨を連絡する便利な機能です。

ただ、コミュニティの場合、月額決済をしたらその時点からサービス開始なわけで、「商品を発送しました!」というメールが届いちゃうのは変です。

なので、この発送完了メールの送信をオフにする必要があります。

「ストア設定」の「詳細設定」にある「発送完了メール」をOFFにします。

STORES.jpで発送完了メールをオフにする

決済方法を限定する

STORES.jpの定期便ではクレジットカードのほか、コンビニ決済と銀行振込を使用可能です(単品の決済であれば、さらにPayPalやキャリア決済なども使えます)が、無料プランでは、これら決済の方法は固定になります。

有料プランにすると、決済の種類を追加したり、決済ごとにオフにすることができます。

ノンプロ研では、あえてコンビニ決済と銀行振込はオフにしています。

というのも、定期便の場合、入金忘れが発生する可能性があり、それを管理する運用手間が発生しそうだったのでやめました。

「ストアの設定」から「ストアの決済方法」を「編集する」をクリックして…

STORES.jpでストアの決済方法を編集する

クレジットカード以外をオフにして「保存」です。

STORES.jpでストアの決済方法を編集する

単品だったらいいんですけどね。

まとめ

以上、STORES.jpをコミュニティで使用する際の3つのポイントをお伝えしました。

いや~…しかし、ECショップを作るのも本当に楽になりましたよね。

お客様を呼び込んで、実際に購入いただくところが一番たいへんなのだと思うのですが、テンプレベースにショップを作って、ストア情報登録して、アイテム登録して…ってだけですぐにオープンできちゃいますもんね。

さて、コミュニティの決済サービスの以降ですが、今月・来月まで期間があります。

まだどうなるかドキドキの部分はありますが、興味深い発見があればお伝えしますね。

どうぞお楽しみに!

ノンプログラマーがプログラミング独立して4年経つとどうなるのか?

$
0
0

dandelion

photo credit: Andrew d’Entremont Logan_Year_Three_0014 via photopin (license)


みなさん、こんにちは!
タカハシ(@ntakahashi0505)です。

独立してから4年が経ちました。

この6月から、弊社プランノーツは5期目に入っております。

6/16が起業した日なのです。

私が仕事を辞めて独立して起業をすることになった理由
来る2015年6月をもちまして現在の会社を辞めることになりました。ほどなくして法人を設立しましてひとり社長として活動を開始します。今回はそのご報告とともに、それに至る経緯についてお話できればと思います。

ですが、あわわあわわしている間に時間が過ぎて、「あ、5期目だ」さっき気がついたところです。

このブログでの独立起業ネタも、一昨年までは以下のように書いていたようです。

独立起業して2年経つとこういう感じになるよという話とそのポイント振り返り
独立をしてから2年が経ちました。今回はこの2年について振り返りつつ、これから起業をされる方、起業を検討される方に「独立起業して2年経つとこういう感じなんだよ」という一つの形とポイントをお伝えできればと思います。

ただ、昨年はどうやら忘れていたようで…

久しぶりに「独立」ということをテーマに書いてみようと思います。

ということで、ノンプログラマーがプログラミング独立して4年経つとどうなるのか?

行ってみましょう!

独立して4年経てば安定するのか

2015年6月に、たいしたスキルもない状態で独立しちゃったわけですが、独立して4年経ったら安定するんでしょうか?

お金的な話(気持ち的には安定していますよ)。

アンサーとしては、「独立当初よりはましですが、全然安定していない」が正解ですね。

現に、つい最近だって、ほんのちょっぴり、「MFクラウドファイナンス」のお世話になりました。

MFクラウドファイナンスでとっても簡単に資金調達ができたその一部始終の話
いよいよ始まりました「MFクラウドファイナンス」。クラウドに預けている会計データをもとに簡単に資金調達の申し込みが可能です。弊社プランノーツにて資金調達にトライしましたので、一部始終をお伝えします。

なぜ安定しないんでしょうか?

理由はいくつかあります。

固定費が増えちゃう

「固定費を増やさない」と言っておきながら、まずSaaS系サービスがどんどん増えていきますね…

  • G Suite
  • Office365
  • Chatwork
  • Slack
  • Zoom
  • Money Forwardクラウド
  • Evernote
  • 1Password
  • Amazon
  • STORES.jp
  • お名前.com
  • エックスサーバー

やられてますな。まあ、それはいいんです。

あと、Chatworkアシスタントを依頼しちゃってる。

ChatWork アシスタントがマネジメントスキルを磨くのに非常に効果的だという話
ChatWork アシスタントを活用させていただいています。コア業務に集中できるようになるというメリットはあります。今回はプラス、マネジメントの訓練に非常に効果的だという話についてお伝えしていきます。

これは、自分のマネジメント能力を鍛えるためという意味合いもあるのですが、けっこう月額的にはそこそこの金額なので、出て行くキャッシュとしてけっこう痛いです。

とはいえ、お願いしている仕事を自分でやったと考えると…それはそれで恐ろしい…

書籍を執筆しすぎちゃう

現在も書き続けている「パーフェクトExcel VBA」。

なぜ、Excel VBAの本格解説本を書く必要があるのか
3冊目となる書籍の企画が通過しました。Excel VBAの本格解説本です。なぜあえて今からVBAの本格解説本を書く必要があるのかについて、出版社さんに企画の際に送った文面をだいたいそのまま記事として公開します。

基本的に午前中は全部執筆に割いています。

本当は、3月には書き上がっている予定だったのですが、未だ書き続けていて、かれこれ9ヶ月となります。

ExcelVBAを使い倒す技術や、GAS本はだいたい3ヶ月くらいで書き上げたのですが、本書は本当に苦しめられていますね…

あと、本書遅れているのですが、次の執筆も決まっており…2019年は書籍を書き続けること決定。

そりゃ、稼ぐ時間ないっすよね。

いろいろとチャレンジしちゃう

あとは、お陰様で「好き」と思える仕事のご依頼が増えてきています。

好きなので、時間面や金銭面で条件的に厳しくてもなんとか受けちゃいたいという力が働いて受けちゃう…みたいな。

あと、ノンプロ研関連もそうです。

遠征などは、比較的積極的にしちゃいます。

チーム大阪ももうメンバー数も10名を超え、安定して活動ができるようになってきました。はじめはドタバタでしたけど…

「ノンプログラマーのためのスキルアップ研究会&もくもく会 in 大阪」を開催しました!
ノンプログラマーがVBA・GAS・Pythonなどのプログラミングスキルを身に着けるためのコミュニティ「ノンプログラマーのためのスキルアップ研究会」、通称「ノンプロ研」。東京を中心に開催されていましたが、この度初めて大阪で開催!渾身のレポートをお届けします!

たぶん、稼ごうと思ったらもう少しいけるんすかね。いや、好きなことをうっかり優先するから、そういう人に仕事頼みたくなるんですかね。わからないですけど。

今期のテーマ

さて、それを受けての今期のテーマですが、もう私の時間リソースの使い道は、うっかり決まってきてしまっているので、その配分を変えるというのはあまりできません。

では、どうするか…?

これは「人の力を借りる」ということなんです。

ただ、ここはちょっと矛盾があって、私がこれまで4年間やってきた戦略って

「私にしかできないことを目立たせる」

ってやつなんですね。

なので、今ブログ経由で来たお仕事を、別の他者が再現するコストがわりかし高いぞ…という、自分の戦略で自分の首を締めるという現象が起きている感じです。

じゃあ、どうするか?

「その人にしかできないことを目立たせるお手伝いをする」

というのが一つのヒントかな…と。

ここはちょっとした実験のようなものが、ノンプロ研などで徐々に行われつつありますので、いろいろとトライしてみたいと思います。

そして、それがうまくいった暁には、今後の可能性もいろいろと広がることでしょう。

まとめ

以上、ノンプログラマーがプログラミング独立して4年経つとどうなるのか?についてお伝えしました。

もう一つ、私視点のアンサーです。

明確に、お仕事が超楽しいです。

  • 自分の仕事が皆さんの役に立ててると思える貢献感
  • 毎日経験を積んで少しずつ前に進めている、できることが増えていると思える達成感や成長感
  • この道を進んでいったらどんな景色が見えるんだろうみたいなワクワク感
  • 全て自己責任でヒヤヒヤしながらもなんとか乗り越えるスリル感

そんなやつを味わえていますから。

会社員にしかできないこともあるし、向き不向きもあると思うので、すべての人がそうとは思いませんが、私の場合はズバリはまりましたね。

あと、この活動を40年くらいは続けられると思うと、ハッピーな気分でいっぱいです(酔

ということで、「独立」は選択肢としてメジャーになってもいいかな、と思っています。

【はじめてのfreeeAPI】GASでリクエストを送りfreeeの事業所一覧を取得する

$
0
0

こんにちは!ITライターのもり(@moripro3)です!

クラウド会計ソフトfreeeのAPIを使って経理業務を自動化する初心者向けシリーズ「はじめてのfreeeAPI」をお届けしています。

前回の記事でGASとfreeeを連携する作業をして、いよいよGASでfreeeAPIを操作できるようになりました!

【はじめてのfreeeAPI】GASとfreeeつなぐ!連携認証の手順を一から紹介します
GoogleAppsScriptでクラウド会計ソフトfreeeのAPIを操作するシリーズ。GASでfreeeを操作するために必要な「freeeマイアプリの作成」と「連携」の手順を、画面キャプチャ盛りだくさんで丁寧に紹介しています。

今回の記事では、最も簡単なお題「事業所一覧の取得」で、これらの練習をしてみましょう。

  • GASでfreeeAPIを操作し、freeeからデータを取得する
  • freeeAPIリファレンスの読み方を理解する

GASでfreeeAPIを操作するメリットの1つが、CSVファイルを経由しなくても直接データのやりとりができることでした。
GASを使用してスプレッドシートとfreeeを連携する

引用:【freee API】GASを用いてGoogleスプレッドシートと連携する

GASでfreeeに「データをください」というリクエストを送り、直接freeeからデータをもらう一連の流れをみていきましょう!

(この記事はfreee株式会社さまとのコラボ企画です。シリーズを通して、皆さんの働くの価値を上げられるよう皆さまをサポートしていきます!)

使用するスプレッドシート

前回の記事で作成したスプレッドシートを引き続き使用します。

登録したライブラリ(OAuth2 for Apps Script)・認証コードは、今後もfreeeAPIを操作するために必要なので、シリーズを通して同じスプレッドシートを利用していきましょう。

当記事の解説ではこのような名前にします。

  • 認証コードを書いたスクリプトファイル → freeeAuth.gs
  • 今回コードを書くスクリプトファイル → Company.gs

Company取得のスクリプトファイル

事業所一覧を取得する

この記事のお題「GASでfreeeAPIを操作して事業所一覧を取得する」を進める前に、「なぜ最初に事業所一覧を取得するのか?」を紹介します。

GASでfreeeAPIを操作することで、様々な操作が自動化できることをシリーズ初回にお伝えしました。

  • 試算表の出力
  • 取引の登録・出力
  • 振替伝票の登録・出力
  • 請求書の作成・出力 など他多数

これらの処理をするためには、freeeAPIに対して「この事業所のデータを取得します(登録します)」という情報を伝える必要があります。

freeeでは、1つのアカウントで複数の「事業所」を作成することができ、事業所ごとに固有の「事業所ID」が割り振られています。(1人で複数の事業を営んでいる場合、事業ごとに会計を分けた方が管理しやすいですよね)

freeeアカウントと事業所の関係

1つのアカウントで複数の「事業所」を作成できるので、GASでfreeeAPIを操作するときには、どの事業所に対する処理かを指定する「事業所ID」が必要になります。

ただし、この「事業所ID」はfreeeの画面上では確認できません。そこで、freeeAPIを通じて事業所一覧を取得し、事業所IDを確認する必要があるのです。

リクエスト・レスポンスとは

この項では、GASでfreeeAPIを操作するために必要な2つの用語を確認しておきましょう。

  • リクエスト(要求)
  • レスポンス(応答)

人間同士のやり取りと似ています。「○○の作業をお願い」と要求し、「はい、○○の結果だよ」と応答が返ってくるイメージです。

「リクエスト」とは、freeeのデータサーバに対して「~の処理をお願いします」と要求することで、その種類は4つあります。

  1. GET「取得」
  2. POST「作成」
  3. PUT「更新」
  4. DELETE「削除」

レスポンスとは、リクエストの「結果」です。正常終了・異常終了など、何らかの結果が返ってきます。これは連載を通じて紹介していきます。

<リクエスト・レスポンスのイメージ>
HTTPリクエストとレスポンスのイメージ

GETリクエストで事業所一覧を取得するコード

処理の内容は「取得」なので、リクエストの種類は「GET」です。そのコードがこちらです。

コードは後の項で詳しく解説するので、まずは実行してみましょう。

function getCompanies() {
  
  //freeeAPIのサービスからアクセストークンを取得
  var accessToken = getService().getAccessToken();
  
  //リクエストを送る時に付与するパラメータ
  var params = {
    "method" : "get",
    "headers" : {"Authorization":"Bearer " + accessToken}
  };
  
  //事業所一覧を取得するためのリクエストURL
  var requestUrl = 'https://api.freee.co.jp/api/1/companies';
  
  var response = UrlFetchApp.fetch(requestUrl, params);
  Logger.log(response);//レスポンスをログ出力
  
}

下記のようなログが出力されれば成功です。

1つのfreeeアカウントで作成している事業所のデータがすべて出力されます。(私は2つの事業所を作成しているので、2事業所が出力されています)

出力結果“id”の値が「事業所ID」です。

freee事業所IDの確認

事業所一覧を取得するコードの解説

この項では、コードの処理内容を1行ずつ解説していきます。

アクセストークンの取得

4行目で、freeeAPIのサービスから「アクセストークン」を取得しています。

var accessToken = getService().getAccessToken();

前回の連携作業で、GASとfreeeをつなぐための「freeeマイアプリ」を作成しました。

アクセストークンとは、データサーバとは別の認証サーバが発行するもので、「freeeマイアプリが、ユーザーの代わりに、freeeデータの操作を許可されていることを示す証明書」です。

この「証明書」は、悪意あるアプリの不正アクセスからAPIを守る技術であるOAuthという認証の仕組みで使われています。

「事前に身元を確認(認証)済みであり、怪しい者ではありませんよ」という証明書です。

(※説明を簡略化するために、下記イメージ図からfreeeマイアプリは省いています)

freeeアクセストークンを取得する

この「証明書」を提示することで、データサーバからデータがもらえる仕組みです。

freeeアクセストークンを提示してデータを取得する

リクエストに付与するパラメータ

7~10行目では、リクエストする際に必要な2つのパラメータを設定しています。

  • メソッド
  • ヘッダー

var params = {
    "method" : "get",
    "headers" : {"Authorization":"Bearer " + accessToken}//Bearerの後ろに半角スペースが入る
  };

メソッドとは、リクエストの方法です。ここではデータの「取得」をするのでGETリクエストです。

(メソッドを省略した場合はGETリクエストになるので記述しなくてもよいですが、ここでは、GETリクエストであることを明示するために記述しています)

ヘッダーとは、APIにリクエストを送る際に必要な情報の一部です。OAuthのルールでは、Authorizationの値に、”Bearer”という文字列とアクセストークンを送ることが決められています。
(※コードでは、Bearerの後ろに半角スペースが入っているのでご注意ください)

ヘッダーについては「そういう決まりなんだな」と理解するだけで、難しく考えなくて大丈夫です。

リクエストURL

13行目で、事業所一覧を取得するための「リクエストURL」を指定しています。

var requestUrl = 'https://api.freee.co.jp/api/1/companies';

リクエストURLとは、APIにアクセスするためのURLです。操作したい内容によってURLが異なります。

freeeAPIでは、https://api.freee.co.jp/api/1 が固定値となり、それに続く部分が操作内容によって異なります。

freeeAPIのリクエストURL

リクエストURLの確認方法

この項では、皆さんがリクエストURLを自分自身で確認できるよう、freeeAPIリファレンスの読み方を紹介します。

リファレンスのページを開いたら、取得したい項目を探します。「事業所一覧」を取得したいので、「Companies 事業所」という項目を見つけましょう。該当部分をクリックして展開します。

※パラメータ説明の部分で「データの取得はGET」と記述しました。ここでもメソッドの種類を確認できます。

freeeAPIリファレンスの読み方

展開すると、概要などを確認できます。

「Parameters」とは、「条件指定」のことです。たとえば、取引一覧を取得するリクエストでは「yyyy/mm/dd以降の取引を取得する」といった条件指定が可能です。その場合、その「日付」がパラメータとなり、リクエストURLに付与します。

事業所一覧の取得では、「No parameters」と表記されているので「条件指定は不要」です。

「Try it out」をクリックします。

freeeAPIリファレンス事業所一覧

「Execute」をクリックします。

freeeAPIリファレンスでExecute

下部に表示される「Request URL」が、事業所一覧を取得する際のリクエストURLです。
(その上部のCurlという項目は関係ないので無視して大丈夫です)

freeeAPIリファレンスでリクエストURLの確認

レスポンスの確認方法

Logger.logで、下記のようなログを確認できました。freeeAPIのレスポンスはJSON形式です。

{
  "companies":[
    {
      "id":xxxxxxx,
      "name":"もり個人事業所",
      "name_kana":"モリコジンジギョウショ",
      "display_name":"もり",
      "role":"admin"
    },
   {
      "id":xxxxxxx,
      "name":"法人テスト環境",
      "name_kana":"ホウジンテストカンキョウ",
      "display_name":"法人ベーシックプラン: 開発用テスト環境",
      "role":"admin"
    }
  ]
}

それぞれのパラメータの意味は、freeeAPIリファレンスで確認できます。

freeeAPIリファレンスの「Responses Sample」の項目にサンプルが掲載されており、「パラメータ詳細」をクリックすると各項目を確認できます。

freeeAPIリファレンスのレスポンスサンプル

“id”は「事業所ID」、“name”は「事業所名」といった、パラメータの詳細が確認できます。

freeeAPIリファレンスのパラメータ詳細

リクエストを送りレスポンスが返る

15行目で「リクエスト」を送り、その結果である「レスポンス」を変数responseに格納しています。次の行でレスポンスの内容をログ出力しています。

var response = UrlFetchApp.fetch(requestUrl, params);
Logger.log(response);//レスポンスをログ出力

GASで「リクエストを送る」機能が、UrlFetchサービスのfetchメソッドです。英単語のfetch(フェッチ)とは、取ってくる・呼んでくる、という意味です。

UrlFetchApp.fetch(リクエストURL, パラメータ)

以上が、GASでfreeeAPIを操作してデータを取得する一連の流れです。freeeの画面を操作せずに、GASで直接データを取得することができましたね!

まとめ

連載「はじめてのfreee API」の第3回目では、これらを紹介しました。

  • GASでfreeeAPIを操作して、freeeからデータを取得する流れ
  • 事業所IDの確認方法
  • freeeAPIリファレンスの読み方

余裕のある方は、freeeAPIリファレンスを読み進めてみて、他の項目のデータ取得もぜひチャレンジしてみてください。

今回のテーマは「freeeからデータを取得する方法」でした。次回は「freeeにデータを送る方法」をテーマにして紹介します。

どうぞお楽しみに!

連載目次:【GAS初心者向け】はじめてのfreeeAPI

GoogleAppsScriptを使用して「クラウド会計ソフトfreee」のAPIを操作する初心者向けシリーズ。GAS × freee APIで何ができるのか?連携方法は?を紹介しています。実際にfreee APIを操作してデータの取得・更新をしてみましょう。

  1. 【はじめてのfreeeAPI】GAS×freeeAPIで経理業務を自動化する最初の一歩!
  2. 【はじめてのfreeeAPI】GASとfreeeつなぐ!連携認証の手順を一から紹介します
  3. 【はじめてのfreeeAPI】GASでリクエストを送りfreeeの事業所一覧を取得する

【はじめてのfreeeAPI】GASでリクエストを送り事業所情報を更新する

$
0
0

こんにちは!ITライターのもり(@moripro3)です!

クラウド会計ソフトfreeeのAPIを使って経理業務を自動化する初心者向けシリーズ「はじめてのfreeeAPI」をお届けしています。

前回の記事では、GASでリクエストを送りfreeeの事業所一覧を取得しました。画面操作をせずに、直接freeeからデータを取得できましたね。

【はじめてのfreeeAPI】GASでリクエストを送りfreeeの事業所一覧を取得する
GoogleAppsScriptでクラウド会計ソフトfreeeのAPIを操作するシリーズ。GETリクエストでfreeeの事業所一覧を取得するコードと、freeeAPIリファレンスの読み方を紹介しています。

今回のテーマは「データの更新」です。「データの取得」に比べると少し作業量が増えますが、丁寧に解説していきますので、一緒に操作しながら試してみてください。

データ更新のお題「事業所情報を更新する」を通じて、これらの練習をしてみます。

  • GASでfreeeにリクエストを送り、直接freeeのデータを更新する
  • リクエストするデータの作り方(JSON形式)を理解する

画面操作ではなく、API操作でデータを更新する流れをみていきましょう!

freeeの画面操作とAPI操作の比較

(この記事はfreee株式会社さまとのコラボ企画です。シリーズを通して、皆さんの働くの価値を上げられるよう皆さまをサポートしていきます!)

(前回のおさらい)事業所IDの確認

前回の記事では、GETリクエストで事業所一覧を取得して「事業所ID」を確認しました。

※今回のお題「事業所情報を更新する」で「事業所ID」を使用しますので、事業所情報を未取得の方は、まず前回の記事をご確認ください。

freee事業所IDの確認

freeeでは、1つのアカウントで複数の「事業所」を作成できるため、GASでfreeeAPIを操作するときには、どの事業所に対する処理かを指定するため「事業所ID」が必要になります。

リクエストとレスポンス

GASでfreeeAPIを操作するために理解しておくべき「2つの用語」も、再確認しておきましょう。

  1. リクエスト(要求)
  2. レスポンス(応答)

    「リクエスト」とは、freeeのデータサーバに対して「~の処理をお願いします」と要求することで、その種類は4つあります。

    1. GET「取得」←前回記事のお題
    2. POST「作成」
    3. PUT「更新」←今回記事のお題
    4. DELETE「削除」

    GETリクエストとPUTリクエストの違い

    GETリクエストは「データをください」という依頼です。手紙に例えると、空の封筒に宛先だけを書いて送り、その封筒にデータを入れて返送してもらうイメージです。

    GETリクエストのイメージ

    それに対して、PUTリクエストは「データの更新」なので、更新したい「データ」を送る必要があります。

    封筒に「データ」を入れて送り、処理の結果を返送してもらうイメージです。

    PUTリクエストのイメージ

    ※GETリクエストでも、封筒の側面に「~のデータ更新をお願い」と記述して送ることもできますが、セキュリティ上の問題があるのでやめておきましょう。(誰でもデータが見えてしまう「はがき」のイメージです)

    GETリクエストでデータを送らない

    APIでデータ更新するための準備

    今回のお題は「PUTリクエストで事業所データを更新する」です。

    まずは、今回新しく登場する用語「ボディ」を紹介します。ボディとは、APIにリクエストを送るときの「データ」のことです。

    手紙で例えると、外から見えないように封筒の中に入れて送る書類です。

    HTTPリクエストのボディのイメージ

    ボディ(body)とは「リクエストで送るデータのこと」と理解しておきましょう。

    APIで更新可能な項目を確認する

    freeeの事業所の項目はたくさんあります。

    • 事業所名
    • 電話番号
    • 業種
    • 法人番号 …他多数

    API経由でどの項目が更新できるのかを、freeeAPIリファレンスで確認しましょう。リファレンスの該当項目「事業所情報の更新」をクリックして展開します。

    freeeAPIリファレンスの事業所情報の更新

    Nameの列に2つの項目があります

    1. id *required(必須項目)
    2. Parameters
    • ①id(path)=リクエストURL(/companies/{id})に付与するパラメータ
    • Parameters(body)=ボディ
      →これが「freeeAPI経由で更新可能な項目」です。

    事業所情報更新のidとparameters

    「パラメータ例」とは「このような形式でボディを作成して送ってね」とfreeeAPIが指定してるものです。

    「パラメータ」詳細をクリックして、各パラメータの内容を確認してみましょう。

    事業所情報の更新のパラメータ例

    APIで更新可能な項目名・example(サンプルデータ)・制約(最小/最大値)等を確認できます。

    freeeAPIリファレンスの項目説明

    更新する項目を決める

    freeeAPIリファレンスのパラメータ詳細の中から、どの項目を更新するか決めましょう。freeeにログインして、画面上で「設定」→「事業所の設定」を開きます。

    freee事業所の設定

     

    当記事では、基本情報の「電話番号1」と「ファックス番号」をfreeeAPI経由で更新してみます。

    freeeの基本情報

     

    もう画面開いちゃってるし、2項目だけなら画面で更新した方が早いじゃん!と思いますが…、当記事の目的は「GASでfreeeAPIを操作して、freeeのデータを更新してみること」なので、ぜひ皆さんもコードを書きながら試してみてください。

    「電話番号1」と「ファックス番号」のパラメータ名を、freeeAPIリファレンスで確認します。パラメータ名とは、リクエストを送る時の項目名称です。

    freeeAPIリファレンスのパラメータ名と説明

    ※画面の項目名とリファレンスの表記が異なる場合もあります

    • 画面の項目名=ファックス番号
    • リファレンスの表記=FAX

    画面とリファレンスを照らし合わせると、このように確認できます。

    freee事業所情報の電話番号とFAX

    リクエストURLを確認する

    リクエストURLとは、APIにアクセスするためのURLです。操作したい内容によってURLが異なります。

    freeeAPIリファレンスの事業所情報

    freeeAPIでは、https://api.freee.co.jp/api/1 が固定値となり、それに続く部分が操作内容によって異なることを前回の記事でお伝えしました。

    • 固定値 https://api.freee.co.jp/api/1
    • 変動値 /companies/{id}  ※id = 事業所ID

    事業所IDが1234567の場合、リクエストURLはこのようになります。

    https://api.freee.co.jp/api/1/companies/1234567

    ボディ(更新データ)を作成する

    ここが今回の最大のポイントです。GASからfreeeに送るデータ「ボディ」を作成します。

    PUTリクエストのデータを作る

    GASでfreeeに送るデータはJSON形式です。JSONとは、JavaScriptでオブジェクトを記述するデータ形式です。

    "パラメータ" : 値,
    "パラメータ" : 値,
    "パラメータ" : 値,
    ・・・

    項目名・パラメータ名・値を整理すると下記のようになり、

    画面上の項目名 パラメータ名
    電話番号1 phone1 (更新する値を設定)
    ファックス番号 fax (更新する値を設定)

    これをJSON形式にして、変数に格納すればボディの完成です。変数名はbodyにしておきましょう。

    var body = {
      "phone1" : "11-1111-1111",
      "fax" : "99-9999-9999"
    };

    以上で、データ更新に必要な情報が揃いました!

    事業所情報を更新するコード

    PUTリクエストを送るための準備が整いました。一部説明が必要なコードは次の項で解説しますので、まずはコードを実行してみましょう。

    function updateCompany() {
      
      //freeeAPIのサービスからアクセストークンを取得
      var accessToken = getService().getAccessToken();
      
      //freeeに送信するデータ(JSON形式)
      var body = {
        "phone1" : "11-1111-1111",//電話番号1
        "fax" : "99-9999-9999"//FAX
      };
      
      //リクエストに付与するパラメータ
      var params = {
        "method" : "put",
        "headers" : {"Authorization":"Bearer " + accessToken},
        "payload" : body, //データ本文
        muteHttpExceptions : true //エラーが発生した場合、レスポンスにエラー全文を出力する
      };
      
      //リクエストURL(事業所IDxxxxxxxは各自設定)
      var requestUrl = 'https://api.freee.co.jp/api/1/companies/xxxxxxx';
      
      var response = UrlFetchApp.fetch(requestUrl, params);
      Logger.log(response);
      
    }

    レスポンスを確認します。レスポンスには全項目が記述されており、”phone1”と”fax”の値を見ると、リクエスト通りの値になっていることが確認できます。

    PUTリクエスト正常終了のログ

    freeeの画面をF5で再読込みをすると、2項目が更新できているのが確認できます。

    freeeAPIでPUTリクエストの結果

    画面をまったく触らずに、API経由で事業所情報の更新ができました。今回の目的「GASでfreeeAPIを操作して、freeeのデータを更新する」が成功です!

    リクエストに付与するパラメータ

    上記コードの一部を解説します。変数paramsに、リクエストに必要な4つのパラメータを格納しています。

    パラメータ 設定値
    method リクエストの種類、ここではputを指定
    headers Authorizationの値に”Bearer”という文字列+アクセストークン
    payload ボディ(送信するデータ本文)
    muteHttpExceptions デフォルトはfalse、trueにすると、エラーが発生した場合レスポンスにエラーの全容が出力される

    var params = {
        "method" : "put",
        "headers" : {"Authorization":"Bearer " + accessToken},//Bearerの後ろに半角スペースが入る
        "payload" : body, //データ本文
        muteHttpExceptions : true //エラーが発生した場合、レスポンスにエラー全文を出力する
    };

    リクエストに失敗した場合

    API通信では、リクエストに何らかの誤りがある場合でも、その結果が返ってきます。レスポンス(結果)にエラーメッセージが書かれているので確認しましょう。

    リクエストでエラーメッセージが返ってくる

    たとえば、「ボディ」のパラメータ ”fax” に全角ひらがな “あいうえお” をセットしてリクエストしてみると、

    var body = {
        "phone1": "11-1111-1111",//電話番号1
        "fax": "あいうえお"//FAX
    };

    このようなレスポンスが返ってくるので、「半角数字で入力してください」とエラーの内容が確認できます。

    リクエストのエラーメッセージ

    リファレンスにも「レスポンスサンプル」が載っているので、参考までにご覧ください。

    freeeAPIリファレンスのエラーサンプル

    以上が、GASでfreeeAPIを操作してデータを更新する一連の流れです。

    まとめ

    連載「はじめてのfreee API」の第4回目では、これらを紹介しました。

    • GASでfreeeAPIを操作して、freeeのデータを更新する流れ
    • リクエストするデータの作り方(JSON形式)

    画面を操作することなくデータの取得・更新ができるAPIの仕組みは素晴らしいですね。この仕組みを活用すれば、色々な作業が効率化できます。

    freeeに取引を登録する場合、画面で一件ずつ登録するのは時間がかかります。CSVインポート機能もありますが、スプレッドシートのデータをCSV形式に変換する手間もあります。そんな時に、GASとfreeeAPIを使って、スプレッドシートのデータをそのまま一括登録できたら便利ですね。

    ぜひ、GAS × freeeAPIを習得して、経理業務の自動化に役立ててみてください。

    これにて「はじめてのfreee API」シリーズは最終回です。お読みいただきありがとうございました。

    次シリーズから実践編を紹介していきます。どうぞお楽しみに!

    連載目次:【GAS初心者向け】はじめてのfreeeAPI

    GoogleAppsScriptを使用して「クラウド会計ソフトfreee」のAPIを操作する初心者向けシリーズ。GAS × freee APIで何ができるのか?連携方法は?を紹介しています。実際にfreee APIを操作してデータの取得・更新をしてみましょう。

    1. 【はじめてのfreeeAPI】GAS×freeeAPIで経理業務を自動化する最初の一歩!
    2. 【はじめてのfreeeAPI】GASとfreeeつなぐ!連携認証の手順を一から紹介します
    3. 【はじめてのfreeeAPI】GASでリクエストを送りfreeeの事業所一覧を取得する

    App Makerで確認用のポップアップダイアログを作成する方法

    $
    0
    0

    みなさん、こんにちは!
    タカハシ(@ntakahashi0505)です。

    App Makerでスプレッドシートをデータベースにしたアプリの作り方をお伝えしています。

    前回の記事はこちらです。

    App Makerでフォームからデータベースとしてのスプレッドシートを更新する方法
    App Makerでスプレッドシートをデータベースにしたアプリの作り方をお伝えしています。今回は、いよいよApp Makerでフォームからデータベースとしてのスプレッドシートを更新する方法をお伝えします。

    App Makerからデータベースとしているスプレッドシートのレコードを更新する方法をお伝えしました。

    さて、今回から何回かにかけて、今度はレコードを削除する方法をお伝えしますよ。

    削除機能には「ポップアップ」を使ってみたいと思います。

    ということで、今回はApp Makerで確認用のポップアップダイアログを作成する方法です。

    では、行ってみましょう!

    前回までのおさらい

    では、おさらいから。

    スプレッドシートに従業員のデータを以下のようにリストしています。

    スプレッドシートの従業員データ

    このデータをソースとしてApp Makerで閲覧、更新ができるようなアプリケーションを作りたいわけです。

    これまでのシリーズで以下のようなことができるようになりました。

    1. 閲覧: スプレッドシートのデータをデータソースに反映して「TablePage」のテーブルに表示する
    2. 更新: 「EditPage」のフォームで変更した内容をスプレッドシートに反映する

    閲覧、更新ができるようになったので、次は「削除」を機能として追加していきたいと思います。

    そして、いきなりレコードが削除されるのも怖いので、確認用のポップアップを表示するようにしていきます。

    ポップアップを作成する

    ポップアップは「Page」として作成する

    App Makerではポップアップ(ダイアログという表現もします)も「Page」の一種として追加していきます。

    なので、まずポップアップページを作成していきます。

    App Makerで新たなページを追加する

    「Create Page, Page Fragment, or Popup」のダイアログが開きますので、ここで「Popup」を選択して、「NEXT」をクリックします。

    App Makerのページ追加でPopupを選択する

    作成できるポップアップの種類

    続いて「Create Popup」のダイアログが開きます。

    ここでは確認用のダイアログをイメージしていますので、「Confirmation dialog」を選択して「CREATE」です。

    App Makerで確認ダイアログを作成する

    これで、以下のように「PAGES」に「ConfirmationDialog」が追加されます。

    App Makerで作成された確認ダイアログ

    実は、ポップアップには多様な6タイプが用意されていて、その中から選ぶことができます。

    • Empty popup: 空のポップアップ、空白のキャンバスとして使用する
    • Navigation menu: ナビゲーションメニュー
    • Confirmation dialog: 確認ダイアログ
    • Notification dialog :通知ダイアログ
    • Modal loading indicator: モーダルローディングインジケーター
    • Snackbar: スナックバー、画面下部に操作についての1行テキストによる説明を表示

    全部使いこなせたら、いろいろなことが実現できそうですね…!

    ボタン操作でポップアップを表示する

    ポップアップはページとは異なり、それ単体で表示することができません。

    ですから、ボタン操作などでポップアップを表示するようにしてあげる必要があります。

    ここでは、EditPageのフォーム上のボタンからポップアップを表示できるようにしていきます。

    ポップアップ表示用のボタンを用意する

    まずは、ボタンを用意しましょう。

    左メニューから「EditPage」を選択して、フォームを表示します。

    これまでのシリーズで「HELLO」ボタンがありましたので、これをProperty Editorでポップアップ表示用に以下のように変更しちゃいましょう。

    • name: ButtonDelete
    • text: Delete
    • onClick: Show Popup…→ConfirmationDialog

    App Makerでボタンをポップアップ表示用に変更

    プリセットアクションのコードを確認する

    ちなみにここで、再度Property Editorの「onClick」を開いて「Custom action」を選択すると、以下のようにプリセットアクションのコードを確認できます。

    App Makerでプリセットアクションのコードを確認する

    つまり、「ポップアップダイアログを表示する」というのは、プリセットで用意されている動作なわけですが、それをコードで書いたらどうなるの?がわかるわけです。

    ポップアップを表示するコード

    今回のプリセットアクションに対応するコードはこちらですね。

    app.popups.ConfirmationDialog.visible = true;

    Appオブジェクトのpopupsプロパティがありますね。

    app.popups

    これは、アプリケーションのポップアップの集合をPropertyMapオブジェクトとして返します。

    PropertyMapオブジェクトは含まれる要素をオブジェクト名をプロパティとして取り出せるという便利なやつでした。

    App Makerでフォーム上のデータを取得してサーバースクリプトに渡す方法
    App Makerでスプレッドシートをデータベースにしたアプリの作り方をお伝えしています。今回は、App Makerでフォーム上のLabelやTextBoxのデータを取得してサーバースクリプトに渡す方法です。

    そこからオブジェクト名「ConfirmationDialog」で取り出すと、それはどうやらPopupOverlayというオブジェクトのようです。

    ちょっと、現時点でApp Makerドキュメントでこのクラスが確認できていないのですが、visibleというプロパティでその表示・非表示をコントロールできるようですね。

    ポップアップの表示を確認する

    では、「PREVIEW」をして、ポップアップの表示動作について確認をしてみましょう。

    「Edit Page」の「DELETE」ボタンをクリックします

    App Makerでポップアップ表示用ボタンをクリック

    すると、以下のようなポップアップが表示されます。

    App Makerで作成したポップアップの表示

    ただ、現時点では「CANCEL」ボタンも「COMPLETE THE ACTION」ボタンも、どちらを押してもただポップアップが閉じるだけですね。

    まとめ

    以上、App Makerで確認用のポップアップダイアログを作成する方法をお伝えしました。

    ポップアップもページの一種なので、これまでのページと同様に作成できますね。

    そして、たくさん種類がある…可能性が広がりますね!

    さて、次回は作成したポップアップの表示や機能を変更していきます。

    App Makerでポップアップダイアログの表示の変更とバインディング式について
    App Makerでスプレッドシートをデータベースにしたアプリの作り方をお伝えしています。今回はApp Makerでポップアップダイアログの表示を変更する方法とバインディング式についてお伝えしていきます。

    どうぞお楽しみに!

    連載目次:App Makerでスプレッドシートをデータベースとして使う

    Googleが提供する社内アプリケーションを簡単に構築できるプラットフォームApp Maker。このシリーズでは、スプレッドシートをデータベースとして簡単なアプリケーションを作る方法をお伝えします。
    1. App Makerでスプレッドシートをベースにモデルを作成する方法
    2. App Makerでクエリスクリプトでスプレッドシートのデータを取得する方法
    3. App Makerでスプレッドシートからデータを取得するクエリスクリプトを丁寧に解説
    4. App Makerで新しいページとフォームウィジェットを配置する方法
    5. App Makerでテーブル行をクリックしたらフォームを表示するイベントを設定する方法
    6. App Makerでボタンウィジェットを設置してクリックで動作させる方法
    7. App Makerでボタンクリックで独自のスクリプトを動作させる方法
    8. App Makerでクライアントスクリプトからサーバースクリプトを呼び出す方法
    9. App Makerのボタンクリックでスプレッドシートにアクセスする方法
    10. App MakerでフォームウィジェットでLabelウィジェットを入力可能なウィジェットに差し替える
    11. App Makerでフォーム上のデータを取得してサーバースクリプトに渡す方法
    12. App Makerでフォームからデータベースとしてのスプレッドシートを更新する方法
    13. App Makerで確認用のポップアップダイアログを作成する方法
    14. App Makerでポップアップダイアログの表示の変更とバインディング式について

    App Makerでポップアップダイアログの表示の変更とバインディング式について

    $
    0
    0
    binding

    photo credit: Rayquetzalcoatl Wear n’ Tear via photopin (license)

    みなさん、こんにちは!
    タカハシ(@ntakahashi0505)です。

    App Makerでスプレッドシートをデータベースにしたアプリの作り方をお伝えしています。

    前回の記事はこちらです。

    App Makerで確認用のポップアップダイアログを作成する方法
    App Makerでスプレッドシートをデータベースにしたアプリの作り方をお伝えしています。今回はApp Makerで確認用のポップアップダイアログを作成してボタン操作により表示する方法です。

    ポップアップを作成して表示するところまで進めました。

    ただ、そのポップアップの表示もボタンによる動作もデフォルトのままなので、それについては作業を進めないといけませんね。

    まずはポップアップの表示を変更していきます。

    ということで、今回はApp Makerでポップアップダイアログの表示を変更する方法とバインディング式についてをお伝えしていきます。

    では、行ってみましょう!

    前回までのおさらい

    現在、App Makerで従業員リストを管理するアプリケーションを作成しています。

    その大元のデータベースとしてスプレッドシートを使っていまして、それがこちらになります。

    スプレッドシートの従業員データ

    App Makerではこのデータをデータソースとして引っ張ってきつつ、レコードの更新や削除または追加といった操作ができるようにしていきたいというわけです。

    それで、今は「削除」の部分を作成している途中で、「DELETE」ボタンクリックをした時点で「本当に削除していいですか?」といった確認用のダイアログを作成したいんですね。

    前回は、ほとんどデフォルトのままのポップアップを作成しまして、それがこちらになります。

    App Makerで作成したポップアップの表示

    今回は、そもそも英語表記だし、目的にあっていない表示部分を変更していきます。

    ポップアップをリネームする

    まず、そもそもポップアップ自体の名前が「ConfirmationDialog」というデフォルトの状態なので、ポップアップの名前を変更していきましょう。

    左側のメニューで作成したポップアップである「ConfirmationDialog」の三点リーダーアイコンをクリックして、選択肢から「Rename」をクリックします。

    App Makerでポップアップをリネームする

    「Rename Page」のダイアログで、名前を「DeleteDialog」などとして「OK」です。

    App Makerでポップアップの新しい名前を入力する

    これでリネーム自体は完了です。

    ボタンクリックのイベントを修正する

    ですが、ポップアップの名前を変えたということは、オブジェクト名が変わったということですから、そのオブジェクト名を使って動作させていたスクリプトがエラーになってしまいます。

    ポップアップ名を変えたらonClickイベントの内容を変更する必要があります。

    「EditPage」の「DELETE」ボタンのonClickイベントを確認すると…やっぱり「Show ConfirmationDialog」となっていますね。

    なので、これを「Show Popup…」→「DeleteDialog」に変更します。

    App MakerでボタンのonClickイベントを変更する

    プリセットアクションのCustom actionを確認してみると、これも以下のように変更されます。

    app.popups.DeleteDialog.visible = true;

    ちゃんと、ポップアップにあたるオブジェクト名が「DeleteDialog」になっていますね。

    ポップアップの表示を変更する

    続いて、ポップアップの表示を変更していきましょう。

    左側から「DeleteDialog」を選択して、画面に表示します。

    ポップアップのタイトルを変更する

    まずポップアップの上部のポップアップのタイトルを変更していきます。

    クリックすると、ここはLabelオブジェクト「ConfirmationTitle」であるということがわかります。

    Property Editorでtextプロパティを「レコードの削除」と変更します。

    App Makerでポップアップのタイトルを変更する

    ポップアップのテキストを変更する

    続いて、その下のエリアのポップアップのテキストにあたるLabelオブジェクト「ConfirmationText」ですが、ここを変更していきます。

    ここは、例えば「Bobのデータを削除しますがよろしいですか?」などと、現在のレコードのNameフィールドの値を引っ張ってきて表示したいのです。

    Property Editorのtextプロパティの右側にある下向き三角アイコンをクリックして、その中から「binding」を選択します。

    App Makerでポップアップのテキストを変更する

    「Choose a binding」というダイアログが開きますので、「datasource」→「EmployeeData」→「item」→「Name」とたどっていきます。

    App Makerでバインディング式を作成する

    下側に何やら式が作成されていきますが、これをバインディング式といいます。

    バインディング式を変更する

    現在は以下のような式ですが、「データソースEmployeeDataの現在のアイテムのNameフィールド」という意味になります。

    @datasources.EmployeeData.item.Name

    このバインディング式の値が、ポップアップのテキストのtextプロパティにバインド、すなわち紐付けられるようになります。

    ですから、さらにこの式を以下のように変更して「OK」をしてあげることで、本来の目的を達成できるはず…!

    @datasources.EmployeeData.item.Name + 'のデータを削除しますがよろしいですか?'

    ポップアップの表示の変更を確認する

    では、プレビューをしてポップアップの表示の変更を確認してみましょう。

    「PREVIEW」をクリックして「EditPage」の「DELETE」ボタンをクリックします。

    ここで、現在のアイテムが「Bob」のレコードになっていることを確認しておきましょう。

    App Makerで削除用のボタンをクリックする

    ポップアップが表示されますが、そのタイトルは「レコードの削除」、テキストは「Bobのデータを削除しますがよろしいですか?」に変更されていることが確認できました。

    App Makerでポップアップの表示の変更を確認

    まとめ

    以上、App Makerでポップアップダイアログの表示を変更する方法をお伝えしました。

    ポップアップの表示内容も、現在のアイテムなどからデータをバインディングして連動した表示させることができるんですね。

    さて、次回はポップアップのボタンの動作について作成していきます。

    どうぞお楽しみに!

    連載目次:App Makerでスプレッドシートをデータベースとして使う

    Googleが提供する社内アプリケーションを簡単に構築できるプラットフォームApp Maker。このシリーズでは、スプレッドシートをデータベースとして簡単なアプリケーションを作る方法をお伝えします。
    1. App Makerでスプレッドシートをベースにモデルを作成する方法
    2. App Makerでクエリスクリプトでスプレッドシートのデータを取得する方法
    3. App Makerでスプレッドシートからデータを取得するクエリスクリプトを丁寧に解説
    4. App Makerで新しいページとフォームウィジェットを配置する方法
    5. App Makerでテーブル行をクリックしたらフォームを表示するイベントを設定する方法
    6. App Makerでボタンウィジェットを設置してクリックで動作させる方法
    7. App Makerでボタンクリックで独自のスクリプトを動作させる方法
    8. App Makerでクライアントスクリプトからサーバースクリプトを呼び出す方法
    9. App Makerのボタンクリックでスプレッドシートにアクセスする方法
    10. App MakerでフォームウィジェットでLabelウィジェットを入力可能なウィジェットに差し替える
    11. App Makerでフォーム上のデータを取得してサーバースクリプトに渡す方法
    12. App Makerでフォームからデータベースとしてのスプレッドシートを更新する方法
    13. App Makerで確認用のポップアップダイアログを作成する方法
    14. App Makerでポップアップダイアログの表示の変更とバインディング式について

    App Makerでポップアップのボタンクリックによるイベントを設定する

    $
    0
    0
    button

    photo credit: johnpaulsimpson STOP via photopin (license)

    みなさん、こんにちは!
    タカハシ(@ntakahashi0505)です。

    App Makerでスプレッドシートをデータベースにしたアプリの作り方をお伝えしています。

    前回の記事はこちらです。

    App Makerでポップアップダイアログの表示の変更とバインディング式について
    App Makerでスプレッドシートをデータベースにしたアプリの作り方をお伝えしています。今回はApp Makerでポップアップダイアログの表示を変更する方法とバインディング式についてお伝えしていきます。

    レコード削除の確認用のポップアップの表示内容を変更するところまで進めました。

    今回は、いよいよこのポップアップのボタンクリックによる動作を作業していきます。

    まずは、App Makerでポップアップのボタンクリックによるイベントを設定する方法です。

    では、行ってみましょう!

    前回までのおさらい

    App Makerで従業員データを操作するアプリケーションを作成しています。

    元のデータはこちらのスプレッドシートを使っています。

    スプレッドシートの従業員データ

    このスプレッドシートをデータベースとして、App Makerからデータの更新や削除を行うというものです。

    前回は、データの削除の機能を作成している途中で、削除の操作をしたときに、以下のような確認のポップアップダイアログを表示するところまで作成しました。

    App Makerでポップアップの表示の変更を確認

    ただ、このポップアップの「ボタン」については、まだデフォルトのままで正しく動作していませんので、この部分を今回進めていきます。

    CANCELボタンのクリックによる動作を確認する

    まず、このポップアップダイアログDeleteDialogの「CANCEL」ボタンについてonClickイベントを確認してみましょう。

    左側メニューから「DeleteDialog」をクリックして表示されたポップアップの「CANCEL」ボタンを選択します。

    すると、右側のProperty Editorにその設定が表示されますので、onClickイベントをクリックして「Custom Action」を選択します。

    App Makerのプリセットアクションのコードを確認する

    すると、以下のようなソースコードが仕込まれていることが確認できます。

    // GENERATED CODE: Add your action below.
    widget.root.visible = false;

    ポップアップを非表示にする

    このコードの意味を解説していきましょう。

    widgetはそのコードが仕込まれているウィジェットを表します。

    widget

    rootプロパティは、そのウィジェットが含まれるトップレベルのLayoutWidgetオブジェクト、つまり今回の場合はポップアップになります。

    Widgetオブジェクト.root

    visibleプロパティ表示・非表示を表すプロパティで、trueであれば表示です。

    LayoutWidgetオブジェクト.visible

    つまり、「このポップアップを非表示にせよ」という意味ですね。

    これはこのままでOKですので、置いておきましょう。

    データを削除する「DELETE」ボタンを作成する

    DELETEボタンを設定する

    続いて、データの削除を実行する「DELETE」ボタンを作成していきましょう。

    「COMPLETE THE ACTION」のボタンを選択して、Property Editorでtextプロパティを「Delete」に変更します。

    App Makerで削除ボタンのイベントを設定する

    続いて、onClickイベントの「Custom action」でコードを確認します。

    こちらもすでに以下のようなコードが入っています。

    // GENERATED CODE: Add your action below.
    widget.root.visible = false;

    これに一行追加して、以下のようにします。

    // GENERATED CODE: Add your action below.
    widget.root.visible = false;
    deleteRecord();

    これで、DELETEボタンをクリックしたら、クライアントスクリプトの「deleteRecord」が呼び出されることになりますが、まだ作成していませんね。

    その部分は次回の記事で作成していきます。

    まとめ

    以上、App Makerでポップアップのボタンクリックによるイベントを設定する方法をお伝えしました。

    シリーズを通して、Buttonウィジェットの設定にも少し慣れてきましたでしょうか。

    次回は、この続きでクライアントスクリプト、そしてサーバースクリプトを作成して、データ削除の処理を完成させていきます。

    どうぞお楽しみに!

    連載目次:App Makerでスプレッドシートをデータベースとして使う

    Googleが提供する社内アプリケーションを簡単に構築できるプラットフォームApp Maker。このシリーズでは、スプレッドシートをデータベースとして簡単なアプリケーションを作る方法をお伝えします。
    1. App Makerでスプレッドシートをベースにモデルを作成する方法
    2. App Makerでクエリスクリプトでスプレッドシートのデータを取得する方法
    3. App Makerでスプレッドシートからデータを取得するクエリスクリプトを丁寧に解説
    4. App Makerで新しいページとフォームウィジェットを配置する方法
    5. App Makerでテーブル行をクリックしたらフォームを表示するイベントを設定する方法
    6. App Makerでボタンウィジェットを設置してクリックで動作させる方法
    7. App Makerでボタンクリックで独自のスクリプトを動作させる方法
    8. App Makerでクライアントスクリプトからサーバースクリプトを呼び出す方法
    9. App Makerのボタンクリックでスプレッドシートにアクセスする方法
    10. App MakerでフォームウィジェットでLabelウィジェットを入力可能なウィジェットに差し替える
    11. App Makerでフォーム上のデータを取得してサーバースクリプトに渡す方法
    12. App Makerでフォームからデータベースとしてのスプレッドシートを更新する方法
    13. App Makerで確認用のポップアップダイアログを作成する方法
    14. App Makerでポップアップダイアログの表示の変更とバインディング式について

    App Makerでポップアップダイアログのボタンで動作するレコード削除のスクリプト

    $
    0
    0
    delete

    photo credit: Ervins Strauhmanis Delete key via photopin (license)

    みなさん、こんにちは!
    タカハシ(@ntakahashi0505)です。

    App Makerでスプレッドシートをデータベースにしたアプリの作り方をお伝えしています。

    前回の記事はこちらです。

    App Makerでポップアップのボタンクリックによるイベントを設定する
    App Makerでスプレッドシートをデータベースにしたアプリの作り方をお伝えしています。今回は、App Makerで作成したポップアップダイアログのボタンクリックによるイベントを設定する方法です。

    ポップアップダイアログのボタンにonClickイベントを設定する方法をお伝えしました。

    ただ、まだonClickイベントを仕込んだだけで、呼び出すべきクライアントスクリプトと、さらにそこから呼び出すサーバースクリプトを作成していませんね。

    それらのスクリプトを動作させることで、データの削除を実現していきます。

    ということで、App Makerでポップアップダイアログのボタンで動作するレコード削除のスクリプトについて紹介します。

    では、行ってみましょう!

    前回までのおさらい

    App Makerのアプリケーションのデータベースは以下のようなスプレッドシートになります。

    スプレッドシートの従業員データ

    このスプレッドシートのデータを、App Makerのデータソースとして読み込んで、それをテーブルやフォームで操作できるようにしています。

    今、「レコードを削除する」機能を実装しているところで、下記のような「レコードの削除」というポップアップダイアログを作成しています。

    App Makerのレコードの削除ポップアップ

    このダイアログで「DELETE」ボタンを押す、つまりonClickイベントには以下の処理が仕込まれています。

    widget.root.visible = false;
    deleteRecord();

    クライアントスクリプトのdeleteRecordという関数を呼び出すわけですね。

    ただ、この関数…まだ作ってないのです。

    ということで、今回作っていきますね!

    ポップアップのボタンからレコードを削除する

    クライアントスクリプトからサーバースクリプトを呼び出す

    「レコードの削除」ポップアップの「DELETE」ボタンで呼び出されるクライアントスクリプトの関数deleteRecordを作成していきます。

    以下の関数をクライアントスクリプトに追加します。

    function deleteRecord() {
      var row = app.datasources.EmployeeData.item.Index + 1;
      google.script.run.withSuccessHandler(loadDatasouce).deleteRecord(row);
    }

    2行目は、現在のレコードのIndexフィールドを取得して、それを元に削除すべきスプレッドシートの行番号を求めるというものですね。

    スプレッドシートの1行目は見出し行なので、プラス1としています。

    3行目は、サーバースクリプト側の関数deleteRecordにその行番号rowを渡して呼び出すというものです。

    withSuccessHandlerメソッドで、無事に成功したらすでにクライアントスクリプトに定義済みの以下の関数loadDatasouceを呼び出します。

    function loadDatasouce() {
      app.datasources.EmployeeData.load();
    }

    App Makerのデータソースをリロードするものですね。

    サーバースクリプトでレコードを削除する

    続いて、クライアントスクリプトから呼び出されるサーバースクリプト側の関数deleteRecordを作成していきます。

    こちらです。

    function deleteRecord(row) {
      var sheet = openSheet();
      sheet.deleteRow(row);
    }

    …超シンプルですね!

    deleteRowメソッドはその名の通り、シートの指定した行番号の行を削除します。

    Sheetオブジェクト.deleteRow(行番号)

    ちなみに、関数openSheetは対象のスプレッドシートを開いて、データベースとなっているシートを取得するものです。

    function openSheet(){
      var id = '*****スプレッドシートID*****';
      return SpreadsheetApp.openById(id).getSheets()[0];
    }

    レコード削除の動作確認をする

    では、レコード削除の動作確認をしていきましょう。

    まず、スプレッドシートのデータベースはこちらの状態とします。

    App Makerのデータベースとなるスプレッドシートのデータ

    App Makerで、アプリケーションを「PREVIEW」して「Jay」のレコードを削除していきます。

    EditPageでJayのレコードが表示されている状態で「DELETE」ボタンをクリックします。

    App MakerのEditPageでDELETEボタンをクリック
    すると、以下のように「レコードの削除」ポップアップが表示され、確認がうながされますので「DELETE」をクリック!

    App Makerのレコードの削除ポップアップでDELETEボタンをクリック

    これで削除ができているはず…スプレッドシートをみると、Jayのレコード行が削除されていることが確認できます。

    App Makerのデータベースのスプレッドシートでレコードが削除されていることを確認

    App MakerのTablePageでも、同じレコードが削除されています。

    App MakerのTablePageでレコードが削除されていることを確認

    まとめ

    以上、App Makerでポップアップダイアログのボタンで動作するレコード削除のスクリプトについてお伝えしました。

    これでレコード削除の機能も実装することができました。

    残りは、「レコードの追加」ですね。次回以降進めていきます。

    どうぞお楽しみに!

    連載目次:App Makerでスプレッドシートをデータベースとして使う

    Googleが提供する社内アプリケーションを簡単に構築できるプラットフォームApp Maker。このシリーズでは、スプレッドシートをデータベースとして簡単なアプリケーションを作る方法をお伝えします。
    1. App Makerでスプレッドシートをベースにモデルを作成する方法
    2. App Makerでクエリスクリプトでスプレッドシートのデータを取得する方法
    3. App Makerでスプレッドシートからデータを取得するクエリスクリプトを丁寧に解説
    4. App Makerで新しいページとフォームウィジェットを配置する方法
    5. App Makerでテーブル行をクリックしたらフォームを表示するイベントを設定する方法
    6. App Makerでボタンウィジェットを設置してクリックで動作させる方法
    7. App Makerでボタンクリックで独自のスクリプトを動作させる方法
    8. App Makerでクライアントスクリプトからサーバースクリプトを呼び出す方法
    9. App Makerのボタンクリックでスプレッドシートにアクセスする方法
    10. App MakerでフォームウィジェットでLabelウィジェットを入力可能なウィジェットに差し替える
    11. App Makerでフォーム上のデータを取得してサーバースクリプトに渡す方法
    12. App Makerでフォームからデータベースとしてのスプレッドシートを更新する方法
    13. App Makerで確認用のポップアップダイアログを作成する方法
    14. App Makerでポップアップダイアログの表示の変更とバインディング式について
    15. App Makerでポップアップのボタンクリックによるイベントを設定する

    App Makerでデータ追加用のポップアップを作成してその表示の動作確認をする

    $
    0
    0
    record

    photo credit: Markus Binzegger Life is about choices via photopin (license)

    みなさん、こんにちは!
    タカハシ(@ntakahashi0505)です。

    App Makerでスプレッドシートをデータベースにしたアプリの作り方をお伝えしています。

    前回の記事はこちらです。

    App Makerでポップアップダイアログのボタンで動作するレコード削除のスクリプト
    App Makerでスプレッドシートをデータベースにしたアプリの作り方をお伝えしています。今回は、App Makerでポップアップダイアログのボタンで動作するレコード削除のスクリプトを紹介していきます。

    ポップアップダイアログからレコード削除をする処理を作成するところまで進めました。

    データの閲覧、更新、削除といろいろな機能を実装できましたので、最後の機能として「追加」を実装していきたいと思います。

    今回はApp Makerでデータ追加用のポップアップを作成してその表示の動作確認をするまでをお伝えします。

    これまでの内容の復習にもなりますね!

    では、行ってみましょう!

    前回までのおさらい

    App Makerで従業員リストを操作するアプリケーションを作っています。

    データベースとしてはスプレッドシートが元となっておりまして、こちらです。

    スプレッドシートの従業員データ

    App Makerを立ち上げた際に、クエリスクリプトが実行されて以下のようなフィールドを持つデータソースとしてロードされます。

    フィールド データ型 説明
    Index Number 行番号
    Name String 従業員名
    Email String メールアドレス
    HireData Date 入社日
    Active Boolean 在職かどうか

    ページとしては、こちらのEditPageがレコードの更新や削除をするための入り口となっています。

    App Makerでレコードを操作するEditPage

    こちらは、全体のデータを確認するTablePageです。

    App Makerでデータを閲覧するTablePage

    今回から、このApp Makerによるアプリケーションにレコードを追加する処理を実装していきます。

    データ追加用のポップアップダイアログを作成する

    データ追加ですが、今回もポップアップダイアログを使っていきます。

    ポップアップダイアログ内に、各フィールドを入力するためのウィジェットを用意して、そこを入力して「ADD」をクリックすると、レコードが追加される…そんなイメージです。

    データ追加用のポップアップダイアログを作成していきます。

    この手順は、これまでも行ったので、復習的な内容になりますね。

    まず、左側メニューのPAGESの「+」アイコンをクリックします。

    App Makerで新たなポップアップを追加する

    続く「Create Page, Page Fragment, or Popup」のダイアログでは「Popup」を選択して「NEXT」です。

    App MakerのCreate PageでPopupを選択する

    「Create Popup」ダイアログでは、レコード削除のときと同様に「Confirmation dialog」を選択肢て、「CREATE」です。

    App MakerのCreate PopupでConfirmation dialogを選択する

    他の種類のほうがいいという可能性もありますが、ひとまず…!

    これで、データ追加用のポップアップダイアログの作成はできました。

    ちなみに、ポップアップの作り方は以下の記事もご参考にどうぞ。

    App Makerで確認用のポップアップダイアログを作成する方法
    App Makerでスプレッドシートをデータベースにしたアプリの作り方をお伝えしています。今回はApp Makerで確認用のポップアップダイアログを作成してボタン操作により表示する方法です。

    ポップアップにフォームウィジェットを追加する

    続いて、ポップアップにレコード追加する際の各フィールドの値を入力できるようにしてききます。

    そこで、便利なのがフォームウィジェット

    ポップアップにもフォームウィジェットをドラッグすれば、フォームを載せられんです。

    App MakerでFormウィジェットをドラッグする

    「Choose datasource」ダイアログでは、そのまま「EmproyeeData」を選択した状態で「NEXT」です。

    App Makerでフォームのデータソースを選択する

    「Choose form type」ダイアログでは「Edit」で「NEXT」ですね。

    App Makerでフォームタイプを選択する

    「Choose form fields」ダイアログでは「Index」だけ解除をして「FINISH」です。

    App Makerでフォームのフィールドを選択する

    というのも、Indexのフィールドは自動で付与するので、フォームとしては不要なんですね。

    これで、ダイアログ上のフォームの設定は完了です。

    ポップアップとフォームを編集する

    ポップアップとそこに配置したフォームを編集していきます。

    不要なウィジェットを削除する

    まず、以下のページャーForm1Pagerと、ラベルConfirmation Titleは不要ですので、選択→ Delete で削除をします。

    App Makerで不要なウィジェットを削除する

    ラベルを入力可能なウィジェットに差し替える

    次に、各フィールドのラベルを Delete で削除して、入力可能なウィジェットに差し替えていきます。

    App Makerでラベルを入力可能なウィジェットに差し替える

    差し替えるウィジェットと、Propery Editorで設定する各プロパティの値は以下にまとめますので、ご覧ください。

    フィールド ウィジェット name value label
    Name TextBox TextBoxName
    Email TextBox TextBoxEmail
    HireDate DateBox DateBoxHireDate
    Active Checkbox CheckboxActive True Active

    valueプロパティはバインドの必要はないですね。

    また、CheckBoxウィジェットについては、valueプロパティにチェックを入れて「true」をデフォルトに、labelプロパティも「Active」に変更しておきます。

    基本的には、以下の記事と同じような作業になるので参考してください。

    App MakerでフォームウィジェットでLabelウィジェットを入力可能なウィジェットに差し替える
    App Makerでスプレッドシートをデータベースにしたアプリの作り方をお伝えしています。今回は、App Makerでフォーム上のLabelウィジェットを入力可能なウィジェットに差し替える方法です。

    ポップアップの表示を変更する

    さらに、ポップアップの表示を変更していきます。

    変更内容は以下のとおりです。

    • Label: Titleのtextプロパティを「レコードの追加」
    • Label: ConfirmationTextのtextプロパティを「データを入力して「ADD」をクリックして下さい」に変更
    • Button: ConfirmationButtonのtextプロパティを「Add」に変更

    App Makerでレコード追加用のポップアップの表示を変更する

    ポップアップをリネームする

    作成したポップアップは「Confirmation Dialog」というデフォルトの名称になっていますので、ポップアップのリネームをしていきます。

    App MakerでポップアップのRenameをする

    「Rename Page」ダイアログで、ポップアップ名を「AddDialog」とし「OK」としました。

    App Makerでポップアップのページ名を変更する

    これでポップアップのほうは完成です!

    データ追加ポップアップを表示するボタンを作成する

    続いて、EditPageにデータ追加用のポップアップAdd Dialogを表示するボタンを作成していきます。

    EditPageに新たなButtonウィジェットをドラッグして追加します。

    フォームの大きさは適宜変更して調整してくださいね。

    App Makerでフォームにボタンを追加する

    追加したボタンウィジェットについて、Property Editorで以下のように設定します。

    • name: ButtonAdd
    • text: Add
    • onClick: Show Popup…→AddDialog

    App Makerでボタンのプロパティを設定する

    これで、データ追加用のポップアップの表示ができるはずです。

    データ追加用のポップアップの表示を確認する

    では、プレビューをしてデータ追加用のポップアップの表示を確認していきます。

    EditPageを表示して「ADD」ボタンをクリックします。

    App Makerでデータ追加ポップアップを表示するボタンをクリックする

    すると、以下のように「レコードの追加」ダイアログが表示されます。

    App Makerで作成したデータ追加ポップアップ

    各フィールドには入力が可能ですが、「CANCEL」「ADD」ボタンを押してもまだポップアップが閉じるだけです。

    まとめ

    以上、App Makerでデータ追加用のポップアップを作成してその表示の動作確認をするまでをお伝えしました。

    次回、このポップアップのボタンクリックで動作するスクリプトを作成していきますね。

    どうぞお楽しみに!

    連載目次:App Makerでスプレッドシートをデータベースとして使う

    Googleが提供する社内アプリケーションを簡単に構築できるプラットフォームApp Maker。このシリーズでは、スプレッドシートをデータベースとして簡単なアプリケーションを作る方法をお伝えします。
    1. App Makerでスプレッドシートをベースにモデルを作成する方法
    2. App Makerでクエリスクリプトでスプレッドシートのデータを取得する方法
    3. App Makerでスプレッドシートからデータを取得するクエリスクリプトを丁寧に解説
    4. App Makerで新しいページとフォームウィジェットを配置する方法
    5. App Makerでテーブル行をクリックしたらフォームを表示するイベントを設定する方法
    6. App Makerでボタンウィジェットを設置してクリックで動作させる方法
    7. App Makerでボタンクリックで独自のスクリプトを動作させる方法
    8. App Makerでクライアントスクリプトからサーバースクリプトを呼び出す方法
    9. App Makerのボタンクリックでスプレッドシートにアクセスする方法
    10. App MakerでフォームウィジェットでLabelウィジェットを入力可能なウィジェットに差し替える
    11. App Makerでフォーム上のデータを取得してサーバースクリプトに渡す方法
    12. App Makerでフォームからデータベースとしてのスプレッドシートを更新する方法
    13. App Makerで確認用のポップアップダイアログを作成する方法
    14. App Makerでポップアップダイアログの表示の変更とバインディング式について
    15. App Makerでポップアップのボタンクリックによるイベントを設定する
    16. App Makerでポップアップダイアログのボタンで動作するレコード削除のスクリプト

    「ノンプロ研大LT大会@大阪」イベントレポートとチーム大阪の変遷とこれから

    $
    0
    0

    ノンプロ研大LT大会@大阪

    みなさん、こんにちは!
    タカハシ(@ntakahashi0505)です。

    「ノンプログラマーのためのスキルアップ研究会」は、ノンプログラマーがプログラミングをはじめとするITスキルを学び合うコミュニティです。

    先日、ノンプロ研のイベント「大LT大会@大阪」が開催されました。

    チーム大阪発足からもうすぐ1年。このイベントは、大阪では3回目の大きめのイベントとなりますね。

    今回は、「ノンプロ研大LT大会@大阪」イベントレポートとともに、ノンプロ研チーム大阪の変遷とこれからについてお伝えしてまいります。

    ちなみに当日の様子は以下、Togetterのツイートまとめもご覧くださいませ。

    ノンプログラマーのためのスキルアップ研究会の大LT大会@大阪
    このイベントは、ノンプログラマーの皆さんが日々の学習成果をLT(ライトニングトーク:5分程度のプレゼンテーション)として発表するイベントです。本コミュニティ「ノンプログラマーのためのスキルアップ研..

    では、行ってみましょう!

    チーム大阪発足からこれまで

    ノンプロ研チーム大阪の最初のオフラインイベントは、2018/9/15に開催した「ノンプログラマーのためのスキルアップ研究会&もくもく会 in 大阪」です。

    当時、当ブログで執筆を担当いただいていた 寺戸さん が「ノンプロ研、楽しそう…」とツイートされたのを見逃さず、あれよあれよと巻き込んで大阪でのイベントを無理やり、勢い良く開催しました。

    イベントレポートがこちらですね。なかなかおもしろいですよw

    「ノンプログラマーのためのスキルアップ研究会&もくもく会 in 大阪」を開催しました!
    ノンプログラマーがVBA・GAS・Pythonなどのプログラミングスキルを身に着けるためのコミュニティ「ノンプログラマーのためのスキルアップ研究会」、通称「ノンプロ研」。東京を中心に開催されていましたが、この度初めて大阪で開催!渾身のレポートをお届けします!

    このイベントで、寺戸さんとともにご登壇いただいたのが株式会社JAMSTOREの 松本さん。イベント開催直後に入会いただいて嬉しかったのを覚えてます。

    このときはチーム大阪のメンバーはまだ2名だったんですね。

    その後、お仕事の都合で大阪によく行かれる きのぴぃ が、大阪もくもく会を定期開催してくれるおかげもあり、毎月お一人ずつくらいのペースでチーム大阪のメンバーも増えていきます。

    そして、2019/1/15に2回目の大きめのオフラインイベント「チーム大阪分科会Vol.1「プログラミング上達のための8つの約束」」を開催しました。

    ノンプロ研チーム大阪分科会Vol.1「プログラミング上達のための8つの約束」でコミュニティの意義を再認識した話
    2019年1月15日に開催されたノンプロ研チーム大阪分科会「プログラミング上達のための8つの約束」。参加レポートとともにコミュニティの意義を再認識できたことについてお伝えします!

    このときの「メンバーが7名」と書いてありますね!!

    我らが もりさん も東京から参戦して、皆さんとともにLTをしていただきました。

    そこから順調にチーム大阪メンバーは増えて、現在は12名になり、前回イベント開催から約半年…

    ということで、また大きめのイベントを開催しようということになり、「大LT大会@大阪」の開催となりました。

    「大LT大会@大阪」で4つの感激したこと

    LTというのはライトニングトークの略で、短いプレゼンテーションのことです。

    イベントに参加するノンプロ研メンバーは全員LTをしていただくというルールで開催。

    今回の持ち時間はひとり10分。

    皆さんのLTを聴いて私が感激したことについて、4つほどお伝えします。

    ノンプロ研での学びの実践

    まず、たいそう感激したのは、皆さんがノンプロ研での学びを真摯に実践されていることでした。

    例えば、以下のようなコメントをいただきました。

    • 社内で勉強会を開催
    • 名言Botの導入
    • 社内でプログラミング部を発足
    • 生活密着型のLINEBotを作ろう!
    • 時間の使い方を変えた

    などなど。

    皆さん、忙しい中でも、プログラミングや学びについて、きちんと習慣や仕組みに取り入れているのに感心しました。鉄の意思を感じました。

    アーカイブ動画を活用されている

    毎回、定例会や大きめのオフラインイベントには撮影機材を持ち込んで、動画を残しています。

    会員であれば、過去分はアーカイブ動画としてご覧いただけるんですね。

    多くのイベントは東京で行われるので、関東圏の皆さんと比べるとアーカイブ動画をかなり活用されているようでした。

    毎回頑張って録画している意味があるというもの…良かった。

    プログラミング以外の学びがある

    私の記憶が正しいなら、登壇された7名のうち、3名くらいの方は「最近はプログラミングをあんまりやれてない」とおっしゃられていたような…

    駄目じゃん…!

    って思われるかも知れませんが、ノンプロ研はそのあたりは寛容です。

    学び方を学ぶ、コミュニティ運営を学ぶ、発信術を磨く、などなど。

    プログラミングに限らず、いろいろな学びがあるんですね。

    こういう価値があるという部分は、主催者である私も言われて気づく部分でもあります。

    Zoom経由で東京からリモート参加

    大きいイベントはZoomを使ってリモート配信をしています。

    今回は、東京からたくさんのメンバーがリモート参加してくださいました。

    ツイートまとめを見ていただくと、チーム大阪以外のメンバーが多数反応してツイートしてくださってますね。

    Zoomのルーム内では会話もできるので、かなり楽しんでらしたようです。

    オフライン重視とはいえ、動画やZoomなどのテクノロジーを用いると、その差を埋めたり、新たな価値を生み出したりといったことが期待できますね。

    今後のノンプロ研の地方戦略

    現時点で、ノンプロ研のメンバーは96名なのですが、地域ごとの分布は以下のようになっています。

    ノンプロ研エリア別メンバー数

    ご覧いただいてわかる通り、圧倒的に首都圏のメンバーが多いんですね。

    人口比率でいうと、他のエリアのポテンシャルはまだまだあるはずなのですが、現時点ではなかなかリーチがしきれていないという課題があります。

    その中で、大阪を中心とした関西エリアは、二桁数のメンバー数になったということで、コミュニティ運営上も非常に興味深い地域であります。

    活動としてはいろいろとトライできる段階にはなってきたので、それによる経験値をためつつ、着実に伸ばしていきたいですね。

    2019年下半期、大阪で実現したいこと

    今、2019年下半期の目標として、トライしたい大きめの件が2つあります。

    1. 大阪で初心者講座を開催したい
    2. 大阪でBT大会兼忘年会を開催したい

    初心者講座は現在、以下フォームで仮申込受付中です。

    ノンプロ研講座【初心者講座@大阪】仮申込フォーム
    本申し込みフォームはコミュニティ「ノンプログラマーのためのスキルアップ研究会」と連携した新しいタイプのプログラミング講座の仮申込フォームとなります。以下を必ずお読みの上、お申し込みください。 「ノンプログラマーのためのスキルアップ研究会」について ■仮申込の仕組みについて 今回募集するコースのうち、「最少催行人数...

    ニーズがあれば実行に移せますので、興味がある方はエイ!っと勇気を出して飛び込んでいただければと思います。

    BTというのはビアトークの略で、アルコールありのLTです。

    これがね…盛り上がるんですよ!

    大阪の知見を他の地域に展開したい

    さて、来る9/14に香川県高松市で四国初・瀬戸内エリア初のノンプロ研イベントを開催すべく準備をしています。

    詳細固まり次第、イベント告知しますね。

    他にも仙台など、いくつかのエリアでチャレンジをしています。

    チャンスがあればイベント開催→チームの立ち上げ→定期的なイベント開催へと拡大できるようにもっていきたいと思います。

    そのときに、大阪での知見は強力な武器になるはず…!

    まとめ

    以上、先日開催されましたイベント「ノンプロ研大LT大会@大阪」レポートとノンプロ研チーム大阪の変遷とこれからについてお伝えしました。

    なぜ、チーム大阪がここまで順調に来られたのかというと、ひとことで言うと「人に恵まれた」に尽きます。

    皆さんの努力、頑張り、勇気、やってみよう、してあげよう、そういった想い&行動が、チームの着実な成長をもたらすエネルギー源になっていると感じます。

    「そうしてよかったな」と感じてもらえる場を提供し続けなければいけませんね。

    これからも頑張ります。

    「ノンプログラマーのためのスキルアップ研究会」について

    コミュニティ「ノンプログラマーのためのスキルアップ研究会」では、毎月の定例会や勉強会、Slackでのやり取りを通して、皆さんのプログラミング学習の質やモチベーションを高めるための活動をしています。 過去の活動については、以下のページをご覧ください。
    コミュニティ「ノンプログラマーのためのスキルアップ研究会」の活動レポートまとめ
    コミュニティ「ノンプログラマーのためのスキルアップ研究会」(略して「ノンプロ研」)。このページはその活動レポートまとめページです。コミュニティ活動の一気読みをされたい方、ぜひご活用くださいませ。
    ぜひ、皆様のご参加をお待ちしております!
    コミュニティ「ノンプログラマーのためのスキルアップ研究会」についてのお知らせ #ノンプロ研
    ノンプログラマーがVBA・GAS・Pythonなどのプログラミングを学ぶコミュニティ「ノンプログラマーのためのスキルアップ研究会」が絶賛活動中です!本ページはコミュニティの情報発信をしていく特集ページです。

    App Makerでデータベースにレコードを追加するスクリプトを作成する

    $
    0
    0
    record

    photo credit: Jonas Hellebuyck Vinyl memories via photopin (license)

    みなさん、こんにちは!
    タカハシ(@ntakahashi0505)です。

    App Makerでスプレッドシートをデータベースにしたアプリの作り方をお伝えしています。

    前回の記事はこちらです。

    App Makerでデータ追加用のポップアップを作成してその表示の動作確認をする
    App Makerでスプレッドシートをデータベースにしたアプリの作り方をお伝えしています。今回は、App Makerでデータ追加用のポップアップを作成してその表示の動作確認をするまでをお伝えします。

    レコード追加用のポップアップを作成する部分を進めました。

    ただ、このポップアップからレコードを追加する「ADD」ボタンの動作が実装されていませんので、作っていく必要がありますね。

    ということで、App Makerでデータベースにレコードを追加するスクリプトを作成する方法をお伝えしていきます。

    では、行ってみましょう!

    前回までのおさらい

    App Makerで作ろうとしているのは、以下のスプレッドシートをデータベースとして、従業員のデータを扱うアプリケーションです。

    スプレッドシートの従業員データ

    App MakerのEditPageでは、以下のように「UPDATE」「ADD」「DELETE」というボタンが実装されていて、それぞれレコードの更新、追加、削除ができるんですね。

    App Makerのデータを更新、追加、削除をするEditPage

    それで、今は「レコードの追加」をする機能を実装しているところで、「ADD」ボタンを押すと、以下のように「レコードの追加」ポップアップダイアログが表示される…というところまで作りました。

    App Makerで作成したデータ追加ポップアップ

    ただ、このポップアップの「CANCEL」「ADD」ボタンを押しても、ダイアログが閉じるだけですので、今回はこの動作を作っていきます。

    レコードを追加する「ADD」ボタンのクリックイベントを設定する

    まず、「レコードの追加」ポップアップの「ADD」ボタンをクリックしたときのイベントを設定します。

    手順はこうです。

    1. 左側メニューから「AddDialog」を選択
    2. フォーム上の「ADD」ボタンを選択
    3. Property EditorのonClickイベントについて「Custom action」を選択
    4. 「Custom action」ダイアログでスクリプトを入力
    5. 「DONE」をクリック

    App Makerでレコード追加ボタンのonClickイベントを設定する

    「Custom action」で入力するスクリプトはこちらです。

    widget.root.visible = false;
    addRecord();

    このポップアップを非表示にしつつ、クライアントスクリプトの「addRecord」を呼び出すというものですね。

    以下の記事で「レコードの削除」をしたときと同様のスクリプトですので、必要に応じてご参考ください。

    App Makerでポップアップのボタンクリックによるイベントを設定する
    App Makerでスプレッドシートをデータベースにしたアプリの作り方をお伝えしています。今回は、App Makerで作成したポップアップダイアログのボタンクリックによるイベントを設定する方法です。

    クライアントスクリプトのデータ追加処理

    続いて、クライアントスクリプトのデータ追加処理「addRecord」を実装していきます。

    関数addRecordは、スプレッドシートに追加する際のシートの行番号と、追加するレコードのデータの配列を生成して、サーバースクリプトに渡すというものです。

    function addRecord() {
      var index = app.datasources.EmployeeData.items.length + 1;
      var row = index + 1;
    
      var values = [];
      values.push(app.popups.AddDialog.descendants.TextBoxName.value);
      values.push(app.popups.AddDialog.descendants.TextBoxEmail.value);
      values.push(formatDate(app.popups.AddDialog.descendants.DateBoxHireDate.value));
      values.push(app.popups.AddDialog.descendants.CheckboxActive.value);
     
      google.script.run.withSuccessHandler(loadDatasouce).setRecord(row, values);
    }

    レコードを追加するシートの行番号を求める

    2行目ですが、現在のアプリケーションのデータソース「EmployeeData」のアイテム数を算出してそれに1を追加しています。

    アイテム数がインデックスの最大値になりますので、追加するレコードのインデックスはその次ということです。

    Datasourceオブジェクトのitemsプロパティは、データソースのすべてのアイテムを配列で返します。

    Datasourceオブジェクト.items

    スプレッドシートのシートでは、1行目が見出し行になりますので、実際にレコードを追加する行数は、さらにプラス1をしたものになります。

    変数rowとしているのが3行目です。

    追加するレコードのデータを配列として生成する

    5~9行目が配列valuesに追加するレコードのデータを配列として生成する部分です。

    ポップアップAddDialogの各フィールドの値を集めてプッシュして配列を生成していますね。

    データを更新する際にも似たような処理を作成しましたので、そちらもご参考ください。

    App Makerでフォーム上のデータを取得してサーバースクリプトに渡す方法
    App Makerでスプレッドシートをデータベースにしたアプリの作り方をお伝えしています。今回は、App Makerでフォーム上のLabelやTextBoxのデータを取得してサーバースクリプトに渡す方法です。

    ちなみに、関数formatDateはDate型をyyyy-mm-dd形式のString型に変換する関数で、上記の記事で紹介しています。

    function formatDate(dt){
      var yyyy = dt.getFullYear();
      var mm = ('00' + (dt.getMonth()+1)).slice(-2);
      var dd = ('00' + dt.getDate()).slice(-2);
      return yyyy + "-" + mm + '-' + dd;
    }

    サーバースクリプトを呼び出す

    11行目で、変数rowと配列valuesを引数として、サーバースクリプトsetRecordを呼び出します。

    呼び出しが成功した後に、クライアントスクリプトに記載されている関数loadDatasourceを実行します。

    関数loadDatasourceの内容ですが、アプリケーションのデータソース「EmployeeData」をロードするというものです。

    function loadDatasouce() {
      app.datasources.EmployeeData.load();
    }

    これを実行しないと、App Maker側のデータソースにレコードが追加されませんからね。

    サーバースクリプトのレコード追加処理

    さて、サーバースクリプトのレコード追加処理ですが、実は過去作ったスクリプトをそのまま流用することができています。

    追加も更新も、書き込む行番号がちがうだけで実質的に同じ処理ですからね。

    呼び出されるのは関数setRecordですが、受け取った行番号rowに、配列valuesを書き込むというものです。

    function setRecord(row, values) {
      var sheet = openSheet();  
      sheet.getRange(row, 1, 1, values.length).setValues([values]);
    }

    関数openSheetは、スプレッドシートを開いて、対象となるSheetオブジェクトを返すものです。

    function openSheet(){
      var id = '*****スプレッドシートID*****';
      return SpreadsheetApp.openById(id).getSheets()[0];
    }

    スプレッドシートの取得は複数の関数で使用しているので、関数openSheetとして切り出したものです。

    レコード追加機能の動作を確認する

    では、レコード追加機能をプレビューして動作確認していきましょう。

    EditPageの「ADD」ボタンから「レコードの追加」ポップアップを開きます。

    追加するレコードのデータを入力して「ADD」ボタンをクリックします。

    App Makerでレコード追加ポップアップにデータを入力する

    すると、以下のようにスプレッドシートにもレコードが追加されます。

    App Makerのレコード追加がスプレッドシートにも反映

    App Makerのデータソースもロードしましたので、TablePageのほうでもレコード追加が確認できます。

    App Makerで追加したレコードがデータソースにも反映

    まとめ

    以上、App Makerでデータベースにレコードを追加するスクリプトを作成する方法についてお伝えしました。

    これにてスプレッドシートをデータベースとしたApp Makerアプリケーションの作成シリーズは終了です。

    ここまで来れば、以下の一連の流れにもだいぶ慣れてきたのではないでしょうか。

    1. ページ(またはポップアップ)の作成と設定
    2. onClickイベントを設定
    3. クライアントスクリプトを作成
    4. サーバースクリプトを作成

    また、App Makerについて別の便利な使いかたがあれば紹介していきますね。

    どうぞお楽しみに!

    連載目次:App Makerでスプレッドシートをデータベースとして使う

    Googleが提供する社内アプリケーションを簡単に構築できるプラットフォームApp Maker。このシリーズでは、スプレッドシートをデータベースとして簡単なアプリケーションを作る方法をお伝えします。
    1. App Makerでスプレッドシートをベースにモデルを作成する方法
    2. App Makerでクエリスクリプトでスプレッドシートのデータを取得する方法
    3. App Makerでスプレッドシートからデータを取得するクエリスクリプトを丁寧に解説
    4. App Makerで新しいページとフォームウィジェットを配置する方法
    5. App Makerでテーブル行をクリックしたらフォームを表示するイベントを設定する方法
    6. App Makerでボタンウィジェットを設置してクリックで動作させる方法
    7. App Makerでボタンクリックで独自のスクリプトを動作させる方法
    8. App Makerでクライアントスクリプトからサーバースクリプトを呼び出す方法
    9. App Makerのボタンクリックでスプレッドシートにアクセスする方法
    10. App MakerでフォームウィジェットでLabelウィジェットを入力可能なウィジェットに差し替える
    11. App Makerでフォーム上のデータを取得してサーバースクリプトに渡す方法
    12. App Makerでフォームからデータベースとしてのスプレッドシートを更新する方法
    13. App Makerで確認用のポップアップダイアログを作成する方法
    14. App Makerでポップアップダイアログの表示の変更とバインディング式について
    15. App Makerでポップアップのボタンクリックによるイベントを設定する
    16. App Makerでポップアップダイアログのボタンで動作するレコード削除のスクリプト
    17. App Makerでデータ追加用のポップアップを作成してその表示の動作確認をする

    ファミプロ「親子もくもく会」で大人も子どもも学んだという話

    $
    0
    0

    ファミプロ親子もくもく会

    みなさん、こんにちは!
    タカハシ(@ntakahashi0505)です。

    「ノンプログラマーのためのスキルアップ研究会」は、ノンプログラマーがプログラミングをはじめとするITスキルを学び合うコミュニティです。

    さて、5月からスタートしたノンプロ研の新たなプロジェクトである家族向けのプログラミングを学ぶ活動「ファミプロ」。

    先日、その2回目のイベントとなる「ファミプロ親子もくもく会」が開催されました。

    今回はそのレポートをお送りしますね。

    ちなみに当日の様子は以下、Togetterのツイートまとめもご覧くださいませ。

    ノンプロ研 ファミリー向けプログラミング研究会 親子もくもく会 Vol.1
    ノンプログラマーがプログラミングを学ぶコミュニティ、通称「ノンプロ研」。その中で、子どもたちも交えて家族でプログラミングを学ぶイベントを開催して行こう!ということでスタートしたのが「ファミプロ」。..

    では、行ってみましょう!

    ファミプロとは?

    今、子どもたち向けのプログラミング教育が注目されていますね。

    2020年から小学校での履修が必修になり、プログラミング教室もたくさん登場しています。

    ただ、私は思います。

    「大人は…?」

    今、働く現場ではプログラミングやクラウドはおろか、スマホやチャットすらも使えない「大人たち」が重要なポジションについていて、おかげで組織全体としてITがうまく導入・活用できていない…そんな現状があります。

    プログラミング教育、子どもたちだけに押し付けて、大人は何もしないというのはずるいんじゃないか?

    と、私は思います。

    なので、「大人も子どももみんながプログラミングを学ぶ場」が作れたら…という思いから始まったのがファミプロです。

    なので、子どもたちやノンプロ研のメンバーはもちろん、その配偶者(プログラミングはできなくても)も、一緒に学んでいただきます。

    そんなファミプロの栄えあるキックオフイベントのレポートはこちらです。

    ファミリー向けプログラミング研究会「ファミプロ」のKickOffイベントを開催しました
    みなさん、こんにちは!タカハシ(@ntakahashi0505)です。「ノンプログラマーのためのスキルアップ研究会」は、ノンプログラマーがプログラミングをはじめとするITスキルを学び合うコミュニティです。さて、そんなノンプロ研...

    ファミプロイベント「親子もくもく会」とは

    今回、第2回目のファミプロイベント「親子もくもく会」を開催しました。

    「もくもく会」というのは、それぞれがやりたい課題を持ち寄って、それぞれもくもくする会です。

    子どもたちがいっぱいいるので、全く「もくもく」とはなりませんが…w

    今回の参加メンバーはこちら。

    • ノンプロ研メンバー:8名
    • 配偶者・パートナー:2名
    • 子どもたち:7名

    子どもたちは3歳の未就学児から小学6年生のお姉さんまで、幅広い年代に参加いただきましたよ。

    そして、もくもくタイムが終わったら、大人も子どもも全員が前に出て発表をしました。

    小さい子どもたち向けのプログラミング玩具

    小学1年生までの小さい子たちは、プログラミング関連のおもちゃを用意して遊んでいただきました。

    3歳くらいでも、何か試してみて→音や動きがどうなるかワクワク→楽しむ、みたいな楽しみ方が十分にできるみたいです。

    同じおもちゃでも、年齢が上がるにしたがって、「この目的地に到達するためには…?」といったプログラミングっぽい遊び方をし始めるようになるみたいですね。

    年齢による遊び方・思考の違いなどが見られて、親としても学びがありました。

    大きい子どもたち向けScratch

    小学2年生以上のお子さんたちは、Scratchに親子でトライいただいていました。

    Scratch - Imagine, Program, Share
    Scratch is a free programming language and online community where you can create your own interactive stories, games, and animations.

    前回から続けて参加された子どもたちはもちろん、今回から参加された子どもたちも、ちょっとしたゲームとして形になっていたような気がします。

    しかも発想が豊かで面白い…!

    追いかけっこだったり、クイズゲームだったり、音声を取り込んでみたり、できる子はシューティングゲーム作ってましたね。

    「夢中になることを見つけよう」

    最後に親子向けのミニプレゼンとして ビッグサン/ITワークデザイナーさんに「夢中になることを見つけよう」というお話をいただきました。

    みなさんは、「Society5.0」をご存知ですか?

    内閣府が科学技術政策として、未来は科学技術を活用してこういう社会を目指すよ!という提唱をしたもので、以下のリンクから動画なども観られるのでご覧ください。

    ソサエティ5.0
    高度な先進技術の導入であらゆる課題が解決されていく。それがソサエティ5.0(超スマート社会)ソサエティ5.0が世界をリードしていく。その未来はもう目の前に。

    ドローン、AI、遠隔医療、無人農業ロボット、クラウド経営、自動運転バス…

    目覚ましい技術確認が多方面で起こっていて、これらがもうすぐやってきます。

    へ~、すごい便利になっていいね~

    という感想を抱かれるかも知れませんが、これらの技術を身に着け、実現して、社会に貢献するのは誰ですか?

    子どもたちだけでしょうか?

    プレゼンでは「大人も子どもも知ることが重要」とおっしゃってました。

    ほんとその通り。

    これからの時代は、全年齢の全員が学ぶ時代なのですね。

    まとめ

    以上、「ファミプロ親子もくもく会」のレポートをお送りしました。

    さて、そんなファミプロですが、次回は8/18に第3回を予定(ほぼ満席ですが)、9月以降も定期的に開催していく予定です。

    ご興味ある方は、まずご自身が学ぶことからはじめてみてくださいね。

    コミュニティ「ノンプログラマーのためのスキルアップ研究会」についてのお知らせ #ノンプロ研
    ノンプログラマーがVBA・GAS・Pythonなどのプログラミングを学ぶコミュニティ「ノンプログラマーのためのスキルアップ研究会」が絶賛活動中です!本ページはコミュニティの情報発信をしていく特集ページです。

    また、次回レポートをお送りします。

    どうぞお楽しみに!

    「ノンプログラマーのためのスキルアップ研究会」について

    コミュニティ「ノンプログラマーのためのスキルアップ研究会」では、毎月の定例会や勉強会、Slackでのやり取りを通して、皆さんのプログラミング学習の質やモチベーションを高めるための活動をしています。 過去の活動については、以下のページをご覧ください。
    コミュニティ「ノンプログラマーのためのスキルアップ研究会」の活動レポートまとめ
    コミュニティ「ノンプログラマーのためのスキルアップ研究会」(略して「ノンプロ研」)。このページはその活動レポートまとめページです。コミュニティ活動の一気読みをされたい方、ぜひご活用くださいませ。
    ぜひ、皆様のご参加をお待ちしております!
    コミュニティ「ノンプログラマーのためのスキルアップ研究会」についてのお知らせ #ノンプロ研
    ノンプログラマーがVBA・GAS・Pythonなどのプログラミングを学ぶコミュニティ「ノンプログラマーのためのスキルアップ研究会」が絶賛活動中です!本ページはコミュニティの情報発信をしていく特集ページです。

    【初心者向けGAS×Slack】はじめてのSlackアプリを作成しよう

    $
    0
    0

    Slack API

    みなさん、こんにちは!
    タカハシ(@ntakahashi0505)です。

    弊社プランノーツでは、お仕事では主にChatworkを使用していますが、コミュニティ「ノンプロ研」では「Slack」を活用しています。

    どちらのチャットツールも非常に優れているツールなのですが、それぞれの得意分野があります。

    Slackはスレッド、プレビュー、スニペットの添付などの機能が充実していて、連携アプリも豊富にあるというのが魅力です。

    連携といえば、我々ノンプログラマー的には「Google Apps Script」を使って連携したいですよね…?

    ということで、このシリーズでは初心者のノンプログラマー向けに「Google Apps Scriptを使ってSlackをメッセージを送る」をお題として、その連携の方法について学び親しんでいこうというものです。

    まず今回は、Slackを外部から操作するためのアプリを作成してきます。

    ということで、はじめてのSlackアプリを作成しよう、行ってみましょう!

    ノンプログラマーがSlack APIを学ぶハードル

    Slackは、提供されている「Slack API」を使用することで、外部から様々な操作をすることができます。

    管理画面でできることも多く用意されていますし、ドキュメントも整備されています。何より多機能で、色々なことができるように作られています。

    Slack APIのトップページはこちらです。

    Slack APIのトップページ

    Slack API
    Slack APIs allow you to integrate complex services with Slack to go beyond the integrations we provide out of the box.

    ただ、日本のノンプログラマーからすると、パッと見でSlack APIはとてもハードルが高く見えてしまうという難点があります。

    なんとなくトップページをチラ見された時点でお気づきと思いますが、それは以下の理由によります。

    • 完全に英語
    • 多機能すぎて何から初めていいか分かりづらい

    ということで、このシリーズではSlackへの簡単なメッセージへの送信をストレートに実現できるように、サポートをしていきたいと思います。

    Slackアプリとは

    Slackを外部から操作するためには「アプリ」を作成することからはじめます。英語では「App」と表現されています。

    アプリとは、外部のサービスやツールとSlackを連携させるソフトウェアのことです。

    Slack Appディレクトリでは、サードパーティ製のアプリも含めて、現時点で1500以上のアプリが提供されていて、それをワークスペースに連携して使うこともできますし、独自のアプリを開発することができます。

    このシリーズでも独自のアプリを開発することになります。

    フリープランのワークスペースであれば、サードパーティ製アプリやカスタムインテグレーションも含めて10個まで利用できます。

    スタンダード以上の有料プランになると無制限に利用できるようになります。

    ただ、有料はそこそこお値段が張るので、本シリーズで練習するのであれば無料のワークスペースを作成して、そこを使うのが良いかも知れませんね。

    Slackアプリを作成する

    はじめてのSlackアプリの作成

    では、はじめてのSlackアプリの作成をはじめましょう。

    Slack APIの「Your Apps」にアクセスします。

    先ほどのSlack APIのトップページの右上の「Your App」からアクセスすることができます。

    Slack APIページから「Your Apps」にアクセスする

    または、以下のリンクから直接アクセスすることもできます。

    Slack API: Applications | Slack

    開いた「Your Apps」のページでは、作成したアプリについて確認や操作をすることができますが、最初はアプリが何もありません。

    「Create an App」をクリックして、最初のアプリの作成をはじめます。

    Slack APIページでAppの作成をはじめる

    「Create a Slack App」というダイアログが開きますので、「App Name」に作成するアプリ名を、「Development Slack Workspace」ではアプリを作成するワークスペースを選択して「Create App」をクリックします。

    Slackアプリを作成する「Create a Slack App」ダイアログ

    ここではアプリ名は「天気予報さん」としました。

    ワークスペースは皆さんがアプリを追加してもよいワークスペースを選択してくださいね。

    これにて、はじめてのSlackアプリの作成は完了です。

    以下のような「Basic Information」というページに遷移します。

    SlackアプリのBasic Informationページ

    作成したアプリの基本情報についてのページになりますが、英語なのでぱっと見ではわかりづらいっすね。

    アプリの表示を設定する

    続いて、アプリの表示の設定をします。

    画面を下のほうにスクロールすると「Display Information」というコーナーがあります。

    ここでは、アプリの外観や表示を設定できます。

    「Short description」にアプリの簡単な概要説明テキストを、「+Add App Icon」からアイコン画像をアップロードします。

    SlackアプリのDisplay Information

    「App icon & Preview」でSlackで表示される様子のプレビューを確認できますので、満足であれば右下の「Save Changes」をクリックして保存します。

    ちなみに、今回のアプリのアイコンは以下の「FLAT ICON DESIGN」さんからいただきました。商用利用も可で無料です。ありがたし。

    FLAT ICON DESIGN -フラットアイコンデザイン-
    フラットデザインに最適!WEBサイトやDTPですぐ使える商用利用可能なフラットアイコン素材がフリー(無料)ダウンロードできるサイト『FLAT ICON DESIGN』

    まとめ

    以上、初心者向けのはじめてのSlackアプリの作成についてお伝えしてきました。

    実際、管理画面でやっていることはたいしたことないのですが、英語さえわかれば…!!

    という感じですよね。

    ただ、まだアプリの機能は何もありません。

    次回以降、アプリの機能を追加していきますね。

    どうぞお楽しみに!

    【初心者向けGAS】Slackにメッセージを投稿するIncoming Webhooksの最初の一歩

    $
    0
    0
    hook

    photo credit: www.ilkkajukarainen.fi 6Q3A2896 via photopin (license)

    みなさん、こんにちは!
    タカハシ(@ntakahashi0505)です。

    初心者ノンプログラマー向けとして「GASを使ってSlackにメッセージを送る」を目標に連載をお送りしております。

    前回の記事はこちら。

    【初心者向けGAS×Slack】はじめてのSlackアプリを作成しよう
    初心者のノンプログラマー向けに「Google Apps Scriptを使ってSlackをメッセージを送る」を目標にシリーズをお伝えしていきます。今回は、Slackを外部から操作するためのアプリを作成する方法です。

    はじめてのSlackアプリの作り方についてお伝えしました。

    ただ、Slackアプリはできたのですが、作っただけでは何もできないアプリ…実際には、アプリに何らかの機能を追加していく必要があります。

    シリーズとしてはまずはSlackへのメッセージ送信を目指しますので、それを実現する「Incoming Webhook」という機能をSlackアプリで使用していきます。

    ということで今回は、Slackにメッセージを投稿するIncoming Webhooksの最初の一歩について解説をしていきます。

    では、行ってみましょう!

    前回のおさらい

    前回は、Slackアプリとは何かについてお伝えしつつ、Slack APIの「Your Apps」のページから、「天気予報さん」というアプリを作成して、その表示の設定を行いました。

    Slack API: Applications | Slack

    その表示設定がこちらですね。

    Slackアプリの表示設定

    Slack Appの「Your App」上で、引き続きアプリの機能についての設定を行うことができますので、みていきましょう。

    Slackアプリに追加できる6つの機能

    Slack APIの「Your Apps」を開いたところから再開しましょう。

    機能を追加するアプリを選択します。

    前回作成した「天気予報さん」アプリがあるはずなので、クリックして選択してください。

    Slack APIのYour Appsでアプリを選択する

    「Building Apps for Slack」というコーナー内の「Add features and functionality」をクリックすると展開できるので開きます。

    すると、そこには「追加できる機能」が6つ並んでいます。それぞれ以下のとおりの機能になります。

    • Incoming Webhooks: Slackに外部からメッセージを投稿する
    • Interactive Components: Slackアプリによるメッセージにユーザーが操作可能なボタンを追加する
    • Slash Commands: Slackアプリを操作するためのコマンドを作成する
    • Event Subscriptions: SlackアプリがSlackでのイベントに応答するようにする
    • Bots: SlackアプリとユーザーがメッセージをやりとりするBotを追加する
    • Permissions Configure: SlackアプリがSlack APIを操作する権限を設定する

    ざっと目を通して、どのようなことができるのか確認しておくと良いですね。わくわくしますね。

    Incoming Webhookを使用する

    このシリーズでは、「メッセージの送信」をしたいので、「Incoming Webhooks」を使用します。

    Slack APIでIncoming Webhooksを選択する

    Incomingは「着信」、Webhookは…なんでしょうWeb上の引っ掛けるやつ、的な感じっすかね。

    Incoming Webhooksとは

    「Incoming Webhooks」のページが開きますので、右上のトグルボタンを「On」にします。

    すると画面下部に色々と展開されます。

    Slack APIのIncoming Webhooksページ

    その展開した中に、そもそも「Incoming Webhooks」とは何かということが書いてあるので、見てみましょう。。

    Google翻訳サンによる直訳はこちら。

    受信Webフックは、外部ソースからのメッセージをSlackに投稿するための簡単な方法です。それらはJSONペイロードを持つ通常のHTTPリクエストを利用します。それはメッセージと他のいくつかのオプションの詳細を含みます。メッセージの添付ファイルを含めて、豊富な形式のメッセージを表示できます。

    つまり簡単にまとめると、以下のような仕組みです。

    • Slackに簡単にメッセージを送る方法
    • HTTPリクエストを使用する
    • HTTPリクエストにはJSONペイロードとよばれるデータを持たせる

    ふむふむ…わかったようなわからないような…

    Slackのワークスペース側の視点で考えるといいかもですが、HTTPリクエストをフックして着信を受けとるみたいなイメージですかね。

    新しいWebhookをワークスペースに追加する

    ひとまず進めてみましょう。

    ページをスクロールすると下部に「Add New Webhook to Workspace」というボタンがあるのでクリックします。

    直訳すると「ワークスペースに新しいWebhookを追加する」というわけですね。

    Slack APIで新しいWebhookを追加する

    ワークスペースでのSlackアプリによる操作を許可する

    すると、以下のような画面になります。

    この画面はワークスペースについて、Slackアプリによる操作(今回はメッセージの送信)を許可するための画面です。

    「投稿先」のプルダウンで投稿するチャンネルを選択し、「許可する」をクリックします。

    Slack APIでWebhookを許可する

    Webhook URLをコピーする

    「Incoming Webhooks」のページに戻ると、以下のように新たな「Webhook URL」が追加されていて、「Copy」ボタンでクリップボードにコピーできます。

    後ほどGASのスクリプト内で使用しますので、保管しておきましょう。

    Slack APIでWebhook URLをコピーする

    Webhook URLは以下のような形式のもので、一般のURLと同じものです。

    https://hooks.slack.com/services/XXXXXXXX/XXXXXXXXX/XXXXXXXXXXXXXXXXXXXXXX

    このWebhook URL宛に投稿するメッセージをデータとして持たせた上で「リクエスト」を送ることで、Slackにメッセージを投稿することができるのです。

    つまり、GASでこのURL宛に「リクエスト」を送ることができれば、Slackの指定したチャンネルにメッセージを送ることができるというわけです。

    その部分は次回進めていきますね。

    まとめ

    以上、Slackにメッセージを投稿するIncoming Webhookの最初の一歩についてお伝えしました。

    今回作成したWebhook URLがあれば、GASからSlackへ簡単にメッセージを投稿することができます。

    次回、その方法についてをお伝えしていきます。

    どうぞお楽しみに!

    連載目次:はじめてのSlackアプリでメッセージを投稿する

    ビジネスチャットツールSlack、使ってますか?「Slackアプリ」を使うことでGASを通じてメッセージを投稿をすることができます。このシリーズでは初心者向けにSlackアプリの作り方を解説していきます。
    1. 【初心者向けGAS×Slack】はじめてのSlackアプリを作成しよう
    2. 【初心者向けGAS】Slackにメッセージを投稿するIncoming Webhookの最初の一歩

    【初心者向けGAS】SlackアプリのIncoming Webhooksを使ってメッセージを投稿する方法

    $
    0
    0
    post

    photo credit: RaSeLaSeD – Il Pinguino C’è posta per te – A letter for you via photopin (license)

    みなさん、こんにちは!
    タカハシ(@ntakahashi0505)です。

    初心者ノンプログラマー向けとして「GASを使ってSlackにメッセージを送る」を目標に連載をお送りしております。

    前回の記事はこちら。

    【初心者向けGAS】Slackにメッセージを投稿するIncoming Webhooksの最初の一歩
    初心者ノンプログラマー向けとして「GASを使ってSlackにメッセージを送る」を目標に連載をお送りしています。今回は、Slackにメッセージを投稿するIncoming Webhookの最初の一歩について解説します。

    Incoming WebhooksでSlackアプリにWebhook URLを追加する方法をお伝えしました。

    これで、リクエスト先のURLが決まりましたので、後はGASを使ってそこにリクエストを送るだけ…

    今回は、SlackアプリのIncoming Webhooksを使ってメッセージを投稿する方法です。

    では、行ってみましょう!

    HTTPリクエストとは

    そもそもHTTPリクエストとは何か、から説明しましょう。

    例えば、私たちがブラウザでWebページを閲覧するときに、その目的のページのURLをアドレスバーに入力してEnterしますね。

    すると、ブラウザがそのWebページを持っているWebサーバーに「このページのデータをください」とお願いをします。

    これがHTTPリクエストです。

    リクエストを受け取ったWebサーバーは、Webページのデータをブラウザに返します。

    これをHTTPレスポンスといいます。

    • HTTPリクエストを送る
    • HTTPレスポンスを受け取って取り出す

    この二つの処理を行う機能が、GASでも用意されているということですね。

    HTTP通信については以下の記事により詳しく書いていますので、ご参考くださいませ。

    【初心者向けGAS】Google Apps ScriptでWeb APIを活用するための基礎知識
    Google Apps Script初心者向けの題材としてBotの作り方シリーズです。今回はチャットワークAPIを活用するために必要な知識として、Web API、HTTP通信、UrlFetchサービスについてです。

    Webhook URLへのリクエストの方法

    Webhook URLへのリクエストの方法を確認するために、Slack APIの「Your Apps」のページを開きましょう。

    Slack API: Applications | Slack

    ここで、これまで作成した「天気予報さん」を選択し、「Incoming Webhooks」を開きます。

    そこに、Slackアプリに追加したWebhook URLにリクエストを送るときのルールが記載されているので見てみましょう。

    この部分です。

    To dispatch messages with your webhook URL, send your message in JSON as the body of an application/json POST request.

    Google翻訳サンにお手伝いいただいて、訳するとこんな感じになります。

    WebhookのURLを使ってメッセージを送信するには、メッセージを「application / json」 POSTリクエストの本文としてJSONで送信します。

    わからない言葉いっぱい出てきますね。

    参考にcurlコマンドもありましたので、見てみましょう。

    curl -X POST -H ‘Content-type: application/json’ –data ‘{“text”:”Hello, World!”}’ https://hooks.slack.com/services/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

    curlコマンドとは、LinuxのコマンドでWebサーバーへデータ転送するものです。これと同じ命令をGASで実現できれば良いということになります。

    GASでHTTPリクエストを行うUrlFetchメソッド

    GASでHTTPリクエストを行うのは、UrlFetchAppクラスのfetchメソッドです。

    書式はこちらです。

    UrlFetchApp.fetch(url, params)

    ここで、引数urlはWebhook URLですね。文字列で指定します。

    引数paramsには、必要なパラメータを含むオブジェクトで渡します。

    関係あるパラメータを以下にまとめますね。

    パラメータ名 データ型 説明 指定する内容
    contentType 文字列 送るコンテンツの種類 ‘application/json’
    method 文字列 HTTPメソッド ‘post’
    payload 文字列 ペイロード=POSTリクエストで送る本体 ‘{“text”:”Hello, World!”}”

    …おや、なんとなく先ほどのWebhook URLの説明やcurlコマンドの内容が網羅された気もしなくないですね。

    ちなみに、Incoming Webhooksによるメッセージ投稿の場合、パラメータcontentTypeおよびmethodの指定する内容は常に固定なので、引数urlとパラメータpayloadだけ気にすればOKです。意外と簡単なのです。

    GASからSlackアプリのWebhook URLにリクエストする

    では、SlackアプリのWebhook URLにリクエストするGASのスクリプトを紹介します。

    こちらです。

    function test() {
      var url = '*****Webhook URL*****'; //皆さんのWebhook URLを入力ください
      var params = {
        method: 'post',
        contentType: 'application/json',
        payload: '{"text":"Hello, World!"}'
      };
     
      UrlFetchApp.fetch(url, params);
    }

    先ほどの表の通りにパラメータを指定してあげればOKですね。

    Webhook URLは皆さんが取得したURLを指定してください。

    Slackへの投稿を確認する

    ではSlackへの投稿を確認しましょう。

    スクリプトエディタで上記スクリプトを入力、実行します。

    すると、初回は以下のように「承認が必要です」というダイアログが開きます。

    「許可を確認」からいくつかのウィンドウが開いて「許可」の作業を進めてください。

    GASのスクリプト実行時の許可

    特に、無料のgmailアカウントを使っている場合は、「このアプリは確認されていません」という危険っぽいウィンドウが出てくるので、びっくりせずに以下の記事を参考に進めてください。

    【初心者向けGAS】スクリプト実行時の「承認」でびっくりしないために
    超初心者向けGoogle Apps Scriptを学ぶシリーズ、Botの作成を目指しております。実行時に「承認してください」とスクリプトからのアクセス許可が求められる件について、詳しく解説していきます。

    許可の手順が完了すると、Slackの指定したワークスペースのチャンネルに以下のようなメッセージが送られているはずです。

    GASからSlackに送信したメッセージ

    バッチリですね!

    まとめ

    以上、SlackアプリのIncoming Webhooksを使ってメッセージを投稿する方法をお伝えしました。

    HTTPリクエストの仕組み、また、GASからWebhook URLへHTTPリクエストを送るためのfetchメソッドの使い方について確認しました。

    難しそうに見えますが、メッセージ投稿の場合、fetchメソッドのパラメータは固定のものも多いので、それほどでもありません。

    さて、次回は固定メッセージではなくて、天気予報の結果についてメッセージを送れるようにしていきます。

    【初心者向けGAS】天気予報APIからのJSONをオブジェクトに変換する方法
    初心者ノンプログラマー向けに「GASを使ってSlackにメッセージを送る」を目標にお送りしております。今回は、天気予報API「Weather Hacks」のレスポンスをオブジェクトに変換する方法を紹介します。

    どうぞお楽しみに!

    連載目次:はじめてのSlackアプリでメッセージを投稿する

    ビジネスチャットツールSlack、使ってますか?「Slackアプリ」を使うことでGASを通じてメッセージを投稿をすることができます。このシリーズでは初心者向けにSlackアプリの作り方を解説していきます。
    1. 【初心者向けGAS×Slack】はじめてのSlackアプリを作成しよう
    2. 【初心者向けGAS】Slackにメッセージを投稿するIncoming Webhookの最初の一歩
    3. 【初心者向けGAS】SlackアプリのIncoming Webhooksを使ってメッセージを投稿する方法
    4. 【初心者向けGAS】天気予報APIからのJSONをオブジェクトに変換する方法

    初心者講座GASコース第2期で学んだこと・反省したこと

    $
    0
    0
    blackboard

    photo credit: Global Partnership for Education – GPE Learning prompts on a blackboard via photopin (license)

    みなさん、こんにちは!
    タカハシ(@ntakahashi0505)です。

    「ノンプログラマーのためのスキルアップ研究会」は、ノンプログラマーがプログラミングをはじめとするITスキルを学び合うコミュニティです。

    先日の定例会は「第2回ノンプロ研初心者講座卒業LT大会」

    今回は、5月から7月までに開講していた「初心者講座GASコース第2期」に参加されていた皆さんに、その成果を発表いただこうという主旨になります。

    ということで、この記事はそのレポートと振り返りです。

    ちなみに当日の様子は以下、Togetterのツイートまとめもご覧くださいませ。

    ノンプロ研定例会「第2回ノンプロ研初心者講座卒業LT大会」
    今回は、前回大好評でした「ノンプロ研初心者講座卒業発表会」の第2回です!初心者講座に参加された皆さん(できる限り全員)に5~10分程度のLTプレゼンにより講座参加の成果を発表していただくという素敵..

    では、行ってみましょう!

    みなさんの発表から学んだこと・気づいたこと

    今回は、GASコース第2期を受講された7名の方と、TAさん1名に発表をいただきました。

    講師として携わった私の視点で、皆さんの発表からのポイントを…!

    みなさん、たくさん成果物が完成していた

    今回の受講者の皆さんは全体的に淡々とこなしていらっしゃった印象があったのですが、実は以下のように、たくさんの成果物を作成されていました。

    • 出勤をスマホのフォームから入力して記録する
    • QRコードを活用した図書館システム
    • ネットバンキング振込用のCSV作成
    • 問題出題Bot for Gmail
    • 社内向けメルマガシステム

    GASの経験者も「すごい!」というようなものもあり、皆さんちゃんと目標をもって、すごく真摯に学習されていたんだと思います。

    講師としては大変嬉しい…!

    初心者講座への導線はGAS本→隣IT

    講座参加は多くのケースが当ブログ経由であることはなんとなく理解していました。

    ですが、実はその前に詳解!Google Apps Script完全入門」を手に取らている方がとても多かったのに驚きました。

    本当は書籍だけでもマスターいただければ嬉しいのですが、やはり環境的に学習が難しいケースもあり、コミュニティ+講座はそういう意味で、良い受け皿となれている気がしました。

    第2期の講座の成果と感想

    参加者数ですが、前回のGASコース第1期は20名(大阪サテライト会場参加が4名)、それに対して今回は21名(リモート参加が2名)ということで、東京会場は大人数での参加でした。

    GAS…人気ありますね(ちなみにVBAコース第1期は10名)。

    参加人数としては大成功なのですが、いくつか反省点もありましたね。

    まず前回、いくつか課題を上げていました。

    1. マンパワー的にキツイ
    2. Slackをもっと盛り上げたい
    3. 首都圏以外のエリアから気持ちよく参加いただきたい
    コミュニティ内で初心者向けプログラミング講座を開催してどうだったか
    このたび、「ノンプロ研プログラミング初心者講座第一期」が無事終了しました。先日の定例会で受講者の皆さんにその成果をLT形式で発表をしていただきました。今回はその発表会を受けてのレポートをお送りします。

    マンパワーの問題は、今回はVBAコースとの同時開催をしなかったのでクリアしましたが、残りの二つについて踏まえながら反省の弁を。

    ちょっと雰囲気が固かった?

    「Slackをもっと盛り上げたい」に関連するのですが、会場での質問も第1期より少ない印象でした。いわゆる、ちょっと雰囲気が固いという課題がありました。

    おかげで、質問がなくスムーズに進行しすぎて、毎回時間が余りがちでした。

    さらに、完全に連動しているわけではないのですが、第1期参加者でノンプロ研を退会された方は3名に対して、第2期は7名が退会もしくはその予定です。

    雰囲気が良いと質問も出やすいし、コミュニケーションが取りやすくなる、結果的にSlackなども活発になって…というコミュニティの良さを引っ張り出せるんですが…。

    原因はあるかな…と思っていまして。

    • 第1期は以前からノンプロ研のメンバー比率が高かった
    • 東京会場の参加人数自体が多かった

    1つ目は、初回あるあるなので、仕方ないですね。

    2つ目ですが、やはり人数が多くなって(例えば会場に15人とか)になると参加率が低かったり、学習進度が悪かったりしても、気づきづらかったらり、質問しづらかったり、本人的にも「まあいいか」となりやすいという社会心理のようなものがあります。

    これは、TAさんの人数を増やせばいいという問題ではないような…そんな気がしました。

    なので、売上的には微妙なのですが、次回は定員を無理に増やさないつもりです。

    あと、もうひとつの対策は、現在のVBAコース第2期でも一部実践しているのですが、「飲みニケーション」です!

    リモート配信&動画のセッティング

    リモート配信や動画アーカイブでの参加は「サブ」なのですが、エリア的にまたお仕事的にどうしても、それでしか参加できない方もいらっしゃいます。

    前回の反省を踏まえて、Zoom有料アカウントも確保し、設定もこなれて来ていたのではあるのですが、今回は音声がブチブチ切れるというトラブルがわりと頻繁にありました。

    ピンマイクからビデオへ飛ばすのにBluetoothを使用しているのですが、これがどうやら混線している模様で…

    会場でのwifi接続者が多かったり、無線ルーターの位置の問題だったり、色々と原因は考えられるのですが、はっきりせずに困りました。

    これは対策はなかなか難しいです。良い機材を買うしかないんですかね。

    第3期GASコース受付中!

    ちなみにですが、第3期のGASコースですが、ちょうど開催が決定しまして、現在受付中です。

    以下のページで詳しくはご覧ください。

    コミュニティ連携型!初心者向けプログラミング講座開講のお知らせ
    コミュニティ「ノンプログラマーのためのスキルアップ研究会」と連携した、VBAおよびGoogle Apps Script初心者講座(全6回)を開催させていただくことになりましたのでお知らせします。

    なんと第3期は、GASコースで神TAっぷりを発揮してくださった江藤大さんに講師をお願いしています。

    そして、私タカハシがTAとしてサポートする新スタイル!

    このようにチャレンジしながら進めていきますので、今後ともよろしくお願いいたします!

    まとめ

    以上、「第2回ノンプロ研初心者講座卒業LT大会」のレポートと、「初心者講座GASコース第2期」の反省についてでした。

    ちょっと反省点のほうが目立っちゃいましたかね。

    ただ、LT大会に参加いただいた皆さんは、オフラインイベントもSlackも積極的に参加いただいていて、おそらくきちんと価値を感じていただいていると思います。

    運営側としては、ちゃんと一歩踏み出して、良い活用ができるスパイラルにいかに入っていただくか、そこを突き詰めていきたいですね。

    「ノンプログラマーのためのスキルアップ研究会」について

    コミュニティ「ノンプログラマーのためのスキルアップ研究会」では、毎月の定例会や勉強会、Slackでのやり取りを通して、皆さんのプログラミング学習の質やモチベーションを高めるための活動をしています。 過去の活動については、以下のページをご覧ください。
    コミュニティ「ノンプログラマーのためのスキルアップ研究会」の活動レポートまとめ
    コミュニティ「ノンプログラマーのためのスキルアップ研究会」(略して「ノンプロ研」)。このページはその活動レポートまとめページです。コミュニティ活動の一気読みをされたい方、ぜひご活用くださいませ。
    ぜひ、皆様のご参加をお待ちしております!
    コミュニティ「ノンプログラマーのためのスキルアップ研究会」についてのお知らせ #ノンプロ研
    ノンプログラマーがVBA・GAS・Pythonなどのプログラミングを学ぶコミュニティ「ノンプログラマーのためのスキルアップ研究会」が絶賛活動中です!本ページはコミュニティの情報発信をしていく特集ページです。
    Viewing all 2126 articles
    Browse latest View live
    <script src="https://jsc.adskeeper.com/r/s/rssing.com.1596347.js" async> </script>