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

GASでGoogleスライドの特定のシェイプをオブジェクトIDで取得する方法

$
0
0
id

photo credit: r.mcminds GCMP_sample_photo_1282 via photopin (license)

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

GASでGoogleスライドのプレゼンテーションを楽々作成するテクニックについてシリーズでお伝えしています。

前回の記事はこちら!

GASでGoogleスライドのテキストボックスの文字列を取得する方法
GASでGoogleスライドのプレゼンテーションを楽々作成するテクニックについてお伝えしています。今回はGASでGoogleスライドのTextRangeオブジェクトの概要とその取得方法についてです。

シェイプからTextRangeオブジェクトを取得する方法、またそこから文字列を取り出す方法についてお伝えしました。

ただ、スライド上にシェイプがいくつかあったときに、目的のシェイプをズバっと掴んで操作したいですよね…

今回は、「オブジェクトID」というものを使って、そんな悩みを解決していきます。

ということで、GASでGoogleスライドの特定のシェイプをオブジェクトIDで取得する方法です。

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

前回のおさらい

まず、前回のおさらいからです。

紹介したコードはこちら。

function myFunction() {
  
  var url ='*****テンプレート用プレゼンテーションのURL*****';
  var presentation = SlidesApp.openByUrl(url);  
  var slide = presentation.getSlides()[0];
  var shapes = slide.getShapes();

  for (var i = 0; i < shapes.length; i++){
    var shape = slide.getShapes()[i];  
    Logger.log('シェイプ内の文字列: %s',shape.getText().asString());
  }

}

  1. PresentationオブジェクトをURLで取得
  2. Slideオブジェクトを配列で取得→インデックス0で1枚目のSlideオブジェクトを取得
  3. Shapeオブジェクトを配列で取得→ループしてすべてのShapeオブジェクトの文字列を出力

という流れですね。

スライドはページ数とインデックスが連動しているから良いのですが、シェイプについては目的のシェイプのインデックス…ちょっと分かりづらいです。

では、どうすればよいか…?

というのが本日のお題になります。

オブジェクトIDとは

ですが、このお題は実は、簡単に解決できます。

プレゼンテーション上のページ要素(シェイプ、画像、グラフ、表など)はすべて一意のIDを持っていて、それをオブジェクトIDといいます。

そのオブジェクトIDを使って、ズバッとページ要素を取得できてしまうのです。

オブジェクトIDを取得する

シェイプのオブジェクトIDを取得するには、getObjectIdメソッドを使います。

Shapeオブジェクト.getObjectId()

オブジェクトIDは文字列なので、getObjectIdメソッドの戻り値は文字列になります。

オブジェクトIDを調べるコード

では、前回のコードを修正して、オブジェクトIDも取得できるように変更してみましょう。

10行目のLogger.logで出力する内容に、オブジェクトIDを含めてあげれば良いですね。

こんな感じです。

function myFunction() {
  
  var url ='*****テンプレート用プレゼンテーションのURL*****';
  var presentation = SlidesApp.openByUrl(url);  
  var slide = presentation.getSlides()[0];
  var shapes = slide.getShapes();

  for (var i = 0; i < shapes.length; i++){
    var shape = slide.getShapes()[i];  
    Logger.log('[%s]: %s',shape.getObjectId(), shape.getText().asString());
  }

}

ログを確認するとこうなります。

GASでGoogleスライドのシェイプのオブジェクトIDを取得

これで各シェイプのオブジェクトIDがわかりましたね!

オブジェクトIDからシェイプを取得する

続いて、この調べたオブジェクトIDから、Shapeオブジェクトを取得する方法を見ていきましょう。

ただ、オブジェクトIDを使って取得できるのは、Shapeオブジェクトではなくて、PageElementオブジェクトになります。

なので、PageElementオブジェクトをまず取得するという段取りからスタートです。

オブジェクトIDでページ要素を取得する

Presentationオブジェクトから、オブジェクトIDでPageElementオブジェクトを取得するには、getPageElementByIdメソッドを使います。

Presentationオブジェクト.getPageElementById(オブジェクトID)

ページ要素をシェイプとして返す

さて、これで目的のシェイプがPageElementオブジェクトとして取得できました。

ただ、実際はShapeオブジェクトとして取得したいのです。

そのような場合は、asShapeメソッドを使います。

PageElementオブジェクト.asShape()

これで、目的のシェイプをShapeオブジェクトとして取得できるというわけです。

オブジェクトIDでシェイプを取得するコード

では、実際にオブジェクトIDでシェイプを取得するコードを試してみましょう。

こちらです。

function getShapeByObjectId(){

  var url ='*****テンプレート用プレゼンテーションのURL*****';
  var presentation = SlidesApp.openByUrl(url);  
  
  var id = 'g7c06e4895a_0_4';
  var shape = presentation.getPageElementById(id).asShape();
  Logger.log(shape.getText().asString());
  
}

実行してログを確認すると、以下のようにきちんと目的のシェイプが取得できたということが確認できますね。

GASでGoogleスライドのシェイプをオブジェクトIDで取得する

まとめ

以上、GASでGoogleスライドの特定のシェイプをオブジェクトIDで取得する方法をお伝えしました。

ポイントはこちらですね。

  • シェイプなどのページ要素は一意のオブジェクトIDを持ち、それで取得できる
  • ページ要素をシェイプとして取得するにはasShapeメソッド

次回は、取得したシェイプの文字列に置換処理を行っていきます。

どうぞお楽しみに!

連載目次:GASでGoogleスライドのプレゼンテーションを楽々作成

定例会議用資料、レポート、プレゼンテーションなど、テンプレートをもとにGoogleスライドのプレゼンテーションを作るというお仕事はけっこうあります。全部は無理にしても、いくつかの段取りは、GASを使って自動化できるかも…!?このシリーズでは、そのようなGoogleスライドのプレゼンテーション自動化のアイデアと、スクリプトの書き方を紹介します!
  1. GASでGoogleスライドのプレゼンテーションを操作するはじめの一歩
  2. GASでGoogleスライドを操作するSlidesサービスの基礎の基礎
  3. GASでGoogleスライドのSlideオブジェクトの概要とその取得方法
  4. GASでGoogleスライドのテキストボックスや図形などを取得する方法
  5. GASでGoogleスライドのテキストボックスの文字列を取得する方法

【エクセルVBA】ユーザーフォームのチェックボックスを使ってみよう!

$
0
0

ユーザーフォーム,チェックボックス,アイキャッチ

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

エクセルのユーザーフォームで、フォームを作って動かしてみるまでを目標に、連載記事でフォームやコントロールのプロパティ、イベント、メソッドをご紹介しています。

前回は、ユーザーフォームに追加したコンボボックスに、値をセットする方法をご紹介しました。

【エクセルVBA】コンボボックスに値をセットする2つの方法 RowSourceプロパティとAddItemメソッド
ユーザーフォームを作って使ってみることを目標に、連載記事でフォームやコントロールのプロパティやメソッド、イベントをご紹介しています。今回は、コンボボックスに値をセットする方法を、コンボボックスのRowSourceプロパティを使う方法と、AddItemメソッドを使う方法の2通りご紹介しています。

今回の記事では、チェックボックスをユーザーフォームに追加する方法とプロパティ、イベントをご紹介していきますよ!

前回までのおさらい

前回までに作成したユーザーフォームがこちらです。

ユーザーフォーム,チェックボックス,おさらい

前回記事では、フォームの右上部分にあるコンボボックスに、値をセットする2つの方法をご紹介したのでした。

今回は、こちらのフォームにチェックボックスを追加していきます。

チェックボックスをユーザーフォームに追加する

では早速、ユーザーフォームにチェックボックスを追加していきましょう。

まず、ツールボックスからチェックボックスのアイコンをクリックします。

ユーザーフォーム,チェックボックス,ツールボックス

そして、フォーム上のチェックボックスを配置したい場所をドラッグすれば…

ユーザーフォーム,チェックボックス,ツールボックス,追加

この通り、チェックボックスが追加されます。

しかし、このままでは他のコントロールと比べると、文字が大きいですね。

プロパティシートを開いて、文字の大きさなどの設定をしていきましょう。

オブジェクト名を分り易い名前に変更する

プロパティシートを開いたついでに、他のコントロール同様、このチェックボックスも後々VBAで操作しますので、分り易いオブジェクト名をつけておきましょう。

コントロールのオブジェクト名は、プロパティシートの一番上にある「(オブジェクト名)」の値で設定できるのでしたね。

今回追加したチェックボックスには、「ChkYN」というオブジェクト名をつけておきます。

ユーザーフォーム,チェックボックス,ツールボックス,オブジェクト名

チェックボックスのプロパティ

文字の大きさやフォントを設定する:Fontプロパティ

まずは、文字の大きさやフォントを設定することができるFontプロパティで、文字の大きさを他のコントロールとあわせます。

テキストボックスの記事でご紹介した、Fontプロパティと全く同じ設定方法です。

【エクセルVBA】テキストボックスのプロパティで入力を便利にしよう
エクセルのユーザーフォームを作って、使ってみることを目標に、フォームやコントロールのプロパティやイベントをご紹介しています。今回はテキストボックスのプロパティをいくつかご紹介しています。プロパティの設定によってユーザーフォームの使い勝手は大きく変わってきますよ!

プロパティシートのFontプロパティの値の右にあるボタンをクリックすると、フォントの設定画面を開くことができ、そこでチェックボックスの表記名の文字サイズを変えることができます。

ユーザーフォーム,チェックボックス,ツールボックス,フォント

今回は、他のコントロールと合わせて、文字のサイズを9にしておきました。

チェックボックスのテキストを設定する:Captionプロパティ

お次は、チェックボックスのテキストを設定するCaptionプロパティです。

このプロパティの値を変えると、ユーザーフォーム上でチェックボックスの隣に表示されるテキストを変えることができますよ。

初期値には「ChekBox1」が設定されていますね。

この値を、表記させたいテキストに変更します。

ユーザーフォーム,チェックボックス,ツールボックス,キャプション,表示

するとこのように、このプロパティで指定した値が、チェックボックスの隣に表示されます。

チェックボックスの値を取得・設定する:Valueプロパティ

お次は、VBAでチェックボックスを操作するなら必ずお世話になるであろう、チェックボックスの値を取得・設定できるValueプロパティです。

このプロパティは、チェックボックスにチェックがついていればTrueを、ついていなければFalseを返してくれます。

また、VBAでチェックボックスのチェックの有無を操作したい場合は、True・Falseのいずれかを指定することになります。

Changeイベントでチェックボックスの値が変わったらメッセージを表示する

プロパティをご紹介したところで、今度はチェックボックスのイベントを使ってみましょう。

チェックボックスの値が変わったら=チェックが付けられた又は外されたら、メッセージを表示させてみます。

この、チェックボックスの値が変わった時に何らかの処理をさせたい場合は、チェックボックスのChangeイベントを使います。

Private Sub chkYN_Change()
    If chkYN.Value = True Then
        MsgBox "チェックが付けられました!"
    Else
        MsgBox "チェックが外されました!"
    End If
End Sub

チェックボックスにチェックがつけられたら、「チェックが付けられました!」というメッセージが表示され、チェックが外されたら「チェックが外されました!」というメッセージが表示されるコードです。

早速試してみましょう。

チェックボックスにチェックを入れると…

ユーザーフォーム,チェックボックス,ツールボックス,イベント

この通り、メッセージが表示されましたね。

チェックボックス自体の大きさは変えられない

ここまで、チェックボックスのプロパティやイベントをご紹介してきましたが、残念なお知らせが1つ。

チェックボックスとテキストを合わせた範囲の大きさは変えられるのですが、チェックボックス自体の大きさが変えられないのです。

チェックボックスのON/OFFはテキストを合わせた範囲をクリックすればよいので、マウスでの操作はそこまで不便はないでしょう。

ただ、周りのコントロールのテキストが大きかったり小さかったりすると、チェックボックスの大きさとのバランスが気になってしまうことがあるかもしれません。

見た目を気にしたい場合は、周りのコントロールと大きさのバランスをとる必要がありますね。

最後に

今回は、ユーザーフォームにチェックボックスを挿入する方法とプロパティ、イベントをご紹介しました。

チェックボックスも、ユーザーフォームでは使い勝手のよい便利なコントロールですので、是非使ってみてはいかがでしょうか。

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

連載目次:【エクセルVBA】ユーザーフォームを使ってみよう!

ユーザーフォームは、ちょっとした画面なら作れてしまう、便利な機能です。

何となく敷居が高いように感じてしまいますが、順を追っていけば難しいことはありませんよ。

  1. 【エクセルVBA】ユーザーフォームを作ってみよう!VBEでフォームを挿入する方法
  2. 【エクセルVBA】Showメソッドでユーザーフォームをコマンドボタンから開いてみよう!
  3. 【エクセルVBA】コマンドボタンのClickイベントとUnloadステートメントでユーザーフォームを閉じる方法
  4. 【エクセルVBA】テキストボックスのプロパティで入力を便利にしよう
  5. 【エクセルVBA】テキストボックスでよく使う3つのイベントを使ってみよう
  6. 【エクセルVBA】Initializeイベントでワークシートの値をユーザーフォームの初期値にセットする
  7. 【エクセルVBA】AfterUpdateイベントでテキストボックス同士を連動させてみよう
  8. 【エクセルVBA】コマンドボタンのClickイベントでワークシートを更新してみよう
  9. 【エクセルVBA】ユーザーフォームのリストボックスを使ってみよう!
  10. 【エクセルVBA】リストボックスのRowSourceプロパティの値を変動させてみよう!
  11. 【エクセルVBA】AddItemメソッドでリストボックスに値を追加してみよう!
  12. 【エクセルVBA】リストボックスのListプロパティで複数列の値を更新する
  13. 【エクセルVBA】ユーザーフォームにコンボボックスを追加する方法
  14. 【エクセルVBA】コンボボックスに値をセットする2つの方法 RowSourceプロパティとAddItemメソッド

 

GASでGoogleスライドのシェイプのテキストを置換する方法

$
0
0
replace

photo credit: Pictures by Ann Barn roof repair via photopin (license)

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

GASでGoogleスライドのプレゼンテーションを楽々作成するテクニックについてシリーズでお伝えしています。

前回の記事はこちら!

GASでGoogleスライドの特定のシェイプをオブジェクトIDで取得する方法
GASでGoogleスライドのプレゼンテーションを楽々作成するテクニックについてシリーズでお伝えしています。今回は、GASでGoogleスライドの特定のシェイプをオブジェクトIDで取得する方法です。

つまり、オブジェクトIDさえわかれば、操作対象のシェイプを取得して、そのテキストなどを操作するということができるわけですね。

そのテキストの設定する操作について見ていきましょう。

ということで、今回はGASでGoogleスライドのシェイプのテキストを置換する方法です。

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

前回のおさらい

まず前回のおさらいからです。

以下のコードが、オブジェクトIDからシェイプを取得するというものですね。

function getShapeByObjectId(){

  var url ='*****テンプレート用プレゼンテーションのURL*****';
  var presentation = SlidesApp.openByUrl(url);  
  
  var id = 'g7c06e4895a_0_4';
  var shape = presentation.getPageElementById(id).asShape();
  Logger.log(shape.getText().asString());
  
}

シェイプを取得して、その文字列を出力するというものでした。

シェイプの文字列を置換したい

今回は、取得したシェイプの文字列を置換する方法について見ていきます。

例えば、以下のようなスライドがあって、波かっこの箇所を指定の文字列に置換したいとします。

文字列を置換したいシェイプ

シェイプの文字列を設定する

まずは、シンプルにシェイプの文字列を設定する方法から見ていきます。

そのためには、そのTextRangeオブジェクトのsetTextメソッドを使います。

TextRangeオブジェクト.setText(文字列)

例えば、前述のスライドについて、真ん中のシェイプのオブジェクトIDが「g7c06e4895a_0_4」だったとして、以下のコードを実行してみましょう。

function setShapeString(){

  var url ='*****テンプレート用プレゼンテーションのURL*****';
  var presentation = SlidesApp.openByUrl(url);  

  var id = 'g7c06e4895a_0_4';
  var shape = presentation.getPageElementById(id).asShape();
  shape.getText().setText('ノンプロ研中級講座【GASコース】\n\nスコープ・関数');

}

すると…

GASにより文字列を設定したスライドのシェイプ

おお、うまくいきましたね!

シェイプの文字列を置換する

では、もう少し進めて今度はシェイプの文字列について置換をして差し替えるようにしましょう。

文字列を置換するには、replaceメソッドでしたね。

文字列.replace(置換前パターン, 置換後文字列)

それをもとに、こんなコードを作りました。

function replaceShapeString(){

  var url ='*****テンプレート用プレゼンテーションのURL*****';
  var presentation = SlidesApp.openByUrl(url);  

  var id = 'g7c06e4895a_0_4';
  var shape = presentation.getPageElementById(id).asShape();
  var str = shape.getText().asString();
  
  str = str
    .replace('{講座名}','中級講座')
    .replace('{コース名}', 'GASコース')
    .replace('{レッスン名}', 'スコープ・関数')
    
  shape.getText().setText(str);

}

スライドの文字列を初期の状態に戻して実行すると…

GASにより置換したスライドのシェイプ

ばっちりです。

まとめ

以上、GASでGoogleスライドのシェイプのテキストを置換する方法についてお伝えしました。

ポイントは以下の通りですね。

  • シェイプの文字列を設定するにはTextRangeオブジェクトのsetTextメソッド
  • 文字列の置換はreplaceメソッド

次回は、スプレッドシートのデータをもとにシェイプの文字列を置換するスクリプトを作成していきます。

どうぞお楽しみに!

連載目次:GASでGoogleスライドのプレゼンテーションを楽々作成

定例会議用資料、レポート、プレゼンテーションなど、テンプレートをもとにGoogleスライドのプレゼンテーションを作るというお仕事はけっこうあります。全部は無理にしても、いくつかの段取りは、GASを使って自動化できるかも…!?このシリーズでは、そのようなGoogleスライドのプレゼンテーション自動化のアイデアと、スクリプトの書き方を紹介します!
  1. GASでGoogleスライドのプレゼンテーションを操作するはじめの一歩
  2. GASでGoogleスライドを操作するSlidesサービスの基礎の基礎
  3. GASでGoogleスライドのSlideオブジェクトの概要とその取得方法
  4. GASでGoogleスライドのテキストボックスや図形などを取得する方法
  5. GASでGoogleスライドのテキストボックスの文字列を取得する方法
  6. GASでGoogleスライドの特定のシェイプをオブジェクトIDで取得する方法
  7. GASでGoogleスライドのシェイプのテキストを置換する方法

GASでスプレッドシートのデータをもとにGoogleスライドの文字列を置換する

$
0
0
sheet, music

photo credit: Sesc em São Paulo sheet, music via photopin (license)

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

GASでGoogleスライドのプレゼンテーションを楽々作成するテクニックについてシリーズでお伝えしています。

前回の記事はこちら!

GASでGoogleスライドのシェイプのテキストを置換する方法
GASでGoogleスライドのプレゼンテーションを楽々作成するテクニックについてお伝えしています。今回はGASでGoogleスライドのシェイプのテキストを置換して設定する方法をお伝えします。

スライドのシェイプ内の文字列を置換する方法をお伝えしました。

さて、その置換ですが、置換前の文字列と置換後の文字列をスプレッドシートなどで管理しておけば、メンテナンスが楽ちんそうですよね。

ということで、今回はGASでスプレッドシートのデータをもとにGoogleスライドの文字列を置換するスクリプトを紹介していきます。

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

前回のおさらい

まず、前回のおさらいからです。

作成したコードはこちら。

function replaceShapeString(){

  var url ='*****テンプレート用プレゼンテーションのURL*****';
  var presentation = SlidesApp.openByUrl(url);  

  var id = 'g7c06e4895a_0_4';
  var shape = presentation.getPageElementById(id).asShape();
  var str = shape.getText().asString();
  
  str = str
    .replace('{講座名}','中級講座')
    .replace('{コース名}', 'GASコース')
    .replace('{レッスン名}', 'スコープ・関数')
    
  shape.getText().setText(str);

}

プレゼンテーションのオブジェクトIDで指定したシェイプについて、その含まれている文字列を

  • {講座名} → 中級講座
  • {コース名} → GASコース
  • {レッスン名} → スコープ・関数

と置換するというものでした。

スプレッドシートで置換ルールをメンテナンスしたい

ただ、これらの置換のルールをスクリプト内にベタ書き…というのはメンテナンスしづらいですよね。

ということで、以下のようなシート「shape」を用意しました。

スライドの文字列の置換ルールを記載したスプレッドシート

このスプレッドシート上の置換ルールのもと、それぞれのシェイプ内の文字列を置換してくれたら便利ですよね!

ちなみに、オブジェクトID「g7c06e4895a_0_4」が表すシェイプはこちらのスライドのもので…

Googleスライドの置換対象のシェイプ

オブジェクトIDg7c1238ed2f_0_393」が表すシェイプはこちらのスライドのものです。

Googleスライドの置換対象のシェイプ

文字列の置換処理を関数化する

では、少しずつ進めていきます。

前回のコードですが、文字列の置換の処理の部分は何度も使いまわしが必要そうなので、別関数replaceInBrace_に関数化して切り出しました。

こちらです。

function replaceShapeString(){

  var url ='*****テンプレート用プレゼンテーションのURL*****';
  var presentation = SlidesApp.openByUrl(url);  

  var id = 'g7c06e4895a_0_4';
  var shape = presentation.getPageElementById(id).asShape();
  var str = shape.getText().asString();
  
  str = replaceInBrace_(str, '講座名','中級講座')
  str = replaceInBrace_(str, 'コース名', 'GASコース')
  str = replaceInBrace_(str, 'レッスン名', 'スコープ・関数')
  
  shape.getText().setText(str);
  
}

function replaceInBrace_(str, pattern, replacement){
  
  pattern = '{' + pattern + '}';
  str = str.replace(pattern, replacement);
  return str;
  
}

もととなる文字列strと、置換前の文字列pattern(波かっこ内のものでOK)、置換後の文字列replacementを渡すと、それをもとに置換したものをリターンするというものです。

あまり冒頭のコードと変わらないぞ!と思われるかも知れませんが、波かっこを指定しなくてよくなったのと、あとは…シリーズの後のほうで役に立つ時が来ます。

実行すると、以下のようにうまく置換されるはずです。

GASで文字列置換したスライドのシェイプ

Shapeオブジェクトの取得を関数化する

では、続いて進めていきましょう。

先ほどのコードでいう6行目から14行目のところ、Shapeオブジェクトの取得と置換も関数化して切り出します。

すると、以下のようになります。

function replaceShapeString(){

  var url ='*****テンプレート用プレゼンテーションのURL*****';
  var presentation = SlidesApp.openByUrl(url);  
  var id = 'g7c06e4895a_0_4';
  
  replaceShapeString_(presentation, id, '講座名','中級講座');
  replaceShapeString_(presentation, id, 'コース名', 'GASコース');
  replaceShapeString_(presentation, id, 'レッスン名', 'スコープ・関数');
  
}

function replaceShapeString_(presentation, id, pattern, replacement){

  var shape = presentation.getPageElementById(id).asShape();
  var str = shape.getText().asString();
  str = replaceInBrace_(str, pattern, replacement);
  shape.getText().setText(str);
  
}

function replaceInBrace_(str, pattern, replacement){
  
  pattern = '{' + pattern + '}';
  str = str.replace(pattern, replacement);
  return str;
  
}

ちょっと引数が多いのが気になりますが、いったん良しとしましょう。

実行して、先ほどと同様の結果となるか確認しましょう。

スプレッドシートのデータをもとに置換する

さらに、置換ルールをスプレッドシートから読み取るようにします。

先ほどのコードについて、関数replaceShapeStringを以下のように修正します。

なお、関数replaceShapeString_と、関数replaceInBrace_はそのままで使用します。

function replaceShapeString(){

  var url ='*****テンプレート用プレゼンテーションのURL*****';
  var presentation = SlidesApp.openByUrl(url);  

  var ss = SpreadsheetApp.getActiveSpreadsheet();
  var valuesShape = ss.getSheetByName('shape').getDataRange().getValues();
  
  for(var i = 1; i < valuesShape.length; i++){
    
    var id = valuesShape[i][0];
    var pattern = valuesShape[i][1];
    var replacement = valuesShape[i][2];
    
    replaceShapeString_(presentation, id, pattern, replacement);

  }
}

スプレッドシートとそのシート上のデータの取得して、そのデータの行数分だけループして、置換をしていきます。

冒頭のスプレッドシートを使ったとすると、1枚目のスライドだけでなく、別のスライドも以下のように置換することができるようになりました。

GASで文字列置換したスライドのシェイプ

だいぶ実務で使えるツールになってきましたね。

まとめ

以上、GASでスプレッドシートのデータをもとにGoogleスライドの文字列を置換するスクリプトについて紹介しました。

関数化のところは、ぜひご自身で「自分だったら冒頭のコードからどのように関数化するかな…?」と考えながらトライしてみてくださいね。

次回は、プレゼンテーションのコピーの部分について考えていきます。

どうぞお楽しみに!

連載目次:GASでGoogleスライドのプレゼンテーションを楽々作成

定例会議用資料、レポート、プレゼンテーションなど、テンプレートをもとにGoogleスライドのプレゼンテーションを作るというお仕事はけっこうあります。全部は無理にしても、いくつかの段取りは、GASを使って自動化できるかも…!?このシリーズでは、そのようなGoogleスライドのプレゼンテーション自動化のアイデアと、スクリプトの書き方を紹介します!
  1. GASでGoogleスライドのプレゼンテーションを操作するはじめの一歩
  2. GASでGoogleスライドを操作するSlidesサービスの基礎の基礎
  3. GASでGoogleスライドのSlideオブジェクトの概要とその取得方法
  4. GASでGoogleスライドのテキストボックスや図形などを取得する方法
  5. GASでGoogleスライドのテキストボックスの文字列を取得する方法
  6. GASでGoogleスライドの特定のシェイプをオブジェクトIDで取得する方法
  7. GASでGoogleスライドのシェイプのテキストを置換する方法

GASでGoogleスライドのプレゼンテーションをコピーする方法

$
0
0
copy

photo credit: shixart1985 Group of pink donuts closeup. via photopin (license)

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

GASでGoogleスライドのプレゼンテーションを楽々作成するテクニックについてシリーズでお伝えしています。

前回の記事はこちら!

GASでスプレッドシートのデータをもとにGoogleスライドの文字列を置換する
GASでGoogleスライドのプレゼンテーションを楽々作成するテクニックについてお伝えしています。今回は、GASでスプレッドシートのデータをもとにGoogleスライドの文字列を置換するスクリプトを紹介します。

スプレッドシートのデータをもとにスライド内の文字列を置換するスクリプトを紹介しました。

さて、多くの場合は、テンプレートのプレゼンテーションのコピーを作成してから、置換をほどこしていくはずですね。

ということで、今回はGASでGoogleスライドのプレゼンテーションをコピーする方法をお伝えしていきます。

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

プレゼンテーションのコピーの方法は

さて、スプレッドシートにはSpreadsheetクラスにcopyメソッドがあるのですが、プレゼンテーションのコピーについては、そのものずばりのメソッドがありません。

これはプレゼンテーションだけでなく、ドキュメントもそうですし、他のサービスの多くもそうです。

copyメソッドが用意されているSpreadSheetサービスだけが特別のようですね…

それで、どうすればよいかというと、Driveサービスの機能をお借りすることで実現することができます。

Driveサービスを使ったファイルコピー

ドライブのファイルをコピーする

Drive内のファイルは、Fileオブジェクトとして操作できます。

Slidesサービスから見たらPresentationオブジェクトなのですが、Driveサービスから見たらそれはFileオブジェクトなのです。

ということで、ファイルをコピーするには、FileオブジェクトのmakeCopyメソッドを使えばOKです。

Fileオブジェクト.makeCopy(ファイル名)

ファイル名にはコピーのファイル名を指定します。省略すると、「~のコピー」というファイル名になります。

ファイルIDを使ってFileオブジェクトを取得する

そのmakeCopyメソッドを使うには、そもそもコピー元となるファイルをFileオブジェクトとして取得する必要があります。

そのために、DriveAppクラスのgetFileByIdメソッドを使うことができます。

DriveApp.getFileById(ファイルID)

ファイルIDでファイルをFileオブジェクトとして取得するわけです。

今回はプレゼンテーションですが、URLの以下{ファイルID}の文字列が該当しています。

https://docs.google.com/presentation/d/{ファイルID}/edit#

このIDはSlidesサービスから見たら、プレゼンテーションIDであり、Driveサービスから見たら、ファイルIDになるわけです。

プレゼンテーションをコピーするスクリプト

では、プレゼンテーションをコピーするスクリプトについて見ていきましょう。

こちらです。

function copyTemplate(){

  var sourceFileId ='*****テンプレート用プレゼンテーションのID*****';
  copyPresentation_(sourceFileId);

}

function copyPresentation_(sourceFileId) {

  var sourceFile = DriveApp.getFileById(sourceFileId);
  var newFile = sourceFile.makeCopy(); 

}

関数copyTemplateが実行用の関数で、こちらを実行すると、sourceFileIdを引数として関数copyPresentation_を呼び出し、コピーが実行されます。

実行すると、数秒ほどかかります(プレゼンテーションのコピーは時間がかかるかもですね)。

ドライブを確認すると以下のようにテンプレートのコピーができていることが確認できます。

プレゼンテーションのコピーを作成した

まとめ

以上、GASでGoogleスライドのプレゼンテーションをコピーする方法をお伝えしました。

copyメソッドほしいですけどね…まあ、しかたなしです。

Driveサービスのちからを借りて、makeCopyメソッドを使いましょう。

次回は、作成したプレゼンテーションを戻り値として返す方法です。

どうぞお楽しみに!

連載目次:GASでGoogleスライドのプレゼンテーションを楽々作成

定例会議用資料、レポート、プレゼンテーションなど、テンプレートをもとにGoogleスライドのプレゼンテーションを作るというお仕事はけっこうあります。全部は無理にしても、いくつかの段取りは、GASを使って自動化できるかも…!?このシリーズでは、そのようなGoogleスライドのプレゼンテーション自動化のアイデアと、スクリプトの書き方を紹介します!
  1. GASでGoogleスライドのプレゼンテーションを操作するはじめの一歩
  2. GASでGoogleスライドを操作するSlidesサービスの基礎の基礎
  3. GASでGoogleスライドのSlideオブジェクトの概要とその取得方法
  4. GASでGoogleスライドのテキストボックスや図形などを取得する方法
  5. GASでGoogleスライドのテキストボックスの文字列を取得する方法
  6. GASでGoogleスライドの特定のシェイプをオブジェクトIDで取得する方法
  7. GASでGoogleスライドのシェイプのテキストを置換する方法
  8. GASでスプレッドシートのデータをもとにGoogleスライドの文字列を置換する

GASでコピーしたGoogleスライドのプレゼンテーションを取得する方法

$
0
0
open

photo credit: irio.jyske Small colorful characters via photopin (license)

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

GASでGoogleスライドのプレゼンテーションを楽々作成するテクニックについてシリーズでお伝えしています。

前回の記事はこちら!

GASでGoogleスライドのプレゼンテーションをコピーする方法
GASでGoogleスライドのプレゼンテーションを楽々作成するテクニックについてお伝えしています。今回はGASでGoogleスライドのプレゼンテーションをコピーする方法です。Driveサービスを使いますよ。

Googleスライドのプレゼンテーションをコピーする方法についてお伝えしました。

で、今度はコピーをしたら、そのプレゼンテーションを操作するためにPresentationオブジェクトとして取得する必要があるんですね…

ということで、今回はGASでコピーしたGoogleスライドのプレゼンテーションを取得する方法をお伝えします。

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

前回のおさらい

まずは、おさらいからです。

前回作成したコードがこちらです。

function copyTemplate(){

  var sourceFileId ='*****テンプレート用プレゼンテーションのID*****';
  copyPresentation_(sourceFileId);

}

function copyPresentation_(sourceFileId) {

  var sourceFile = DriveApp.getFileById(sourceFileId);
  var newFile = sourceFile.makeCopy(); 

}

関数copyTemplateを実行すると、IDを指定したプレゼンテーションをコピーすることができます。

ただ、コピーした後に、そのプレゼンテーションに対して操作をするのであれば、そのプレゼンテーションをPresentationオブジェクトとして取得する必要がありますね。

今回は、その部分を進めていきます。

コピーしたファイルをプレゼンテーションとして取得する

ファイルIDでPresentationオブジェクトを取得する

プレゼンテーションを取得するには、以下の記事で紹介した、SlidesAppクラスのopenByUrlメソッドを使うという手がひとつあります。

GASでGoogleスライドを操作するSlidesサービスの基礎の基礎
GASでGoogleスライドのプレゼンテーションを楽々作成するテクニックについてシリーズでお伝えしています。今回は、GASでGoogleスライドを操作するSlideAppサービスの基礎の基礎をお伝えします。

ただ、今回の場合コピーしたファイルのURLを調べるよりも、「ID」を使うほうが簡単です。

SlidesAppクラスのopenByIdメソッドを使用すれば、IDを用いてPresentationオブジェクトを取得することができます。

SlidesApp.openById(ID)

FileオブジェクトのファイルIDを取得する

ここで必要となるコピーしたファイルのIDですが、それはFileオブジェクトのgetIdメソッドで取得可能です。

Fileオブジェクト.getId()

DriveサービスのFileオブジェクトのIDと、SlidesサービスのPresentationオブジェクトのIDは同一のものなのです。

この事実を知っておくと何かと便利です。

これで必要な命令は出揃いました。

プレゼンテーションをコピーするスクリプト

では、プレゼンテーションをコピーするスクリプトについて見ていきましょう。

こちらです。

function copyTemplate(){

  var sourceFileId ='*****テンプレート用プレゼンテーションのID*****';
  var presentation = copyPresentation_(sourceFileId);
  Logger.log(presentation.getName());

}

function copyPresentation_(sourceFileId) {

  var sourceFile = DriveApp.getFileById(sourceFileId);
  var newFile = sourceFile.makeCopy(); 
  var newFileId = newFile.getId();
  var presentation = SlidesApp.openById(newFileId);
  return presentation;

}

関数copyTemplateの4行目ですが、戻り値を受け取り変数presentationに格納するようにしました。

そして、その次の行で、そのプレゼンテーション名をログ出力して確認です。

関数copyPresentation_はコピーしたファイルのIDのを使ってプレゼンテーションを開き戻り値を返します。

実行すると、少し時間かかりますね。数秒ほど待ちます。

ログを確認すると…

GASでコピーしたプレゼンテーション名

「~のコピー」と出力されますね。

また、ドライブを確認すると以下のようにテンプレートのコピーができていることが確認できます。

GASでコピーしたプレゼンテーションファイル

まとめ

以上、GASでコピーしたGoogleスライドのプレゼンテーションを取得する方法をお伝えしました。

ポイントは以下のとおりですね。

  • DriveサービスのファイルIDが、SlidesサービスのプレゼンテーションIDと一緒
  • openByIdメソッドでIDを使ってプレゼンテーションを取得する

次回は、ファイル名の設定について見ていきましょう。

どうぞお楽しみに!

連載目次:GASでGoogleスライドのプレゼンテーションを楽々作成

定例会議用資料、レポート、プレゼンテーションなど、テンプレートをもとにGoogleスライドのプレゼンテーションを作るというお仕事はけっこうあります。全部は無理にしても、いくつかの段取りは、GASを使って自動化できるかも…!?このシリーズでは、そのようなGoogleスライドのプレゼンテーション自動化のアイデアと、スクリプトの書き方を紹介します!
  1. GASでGoogleスライドのプレゼンテーションを操作するはじめの一歩
  2. GASでGoogleスライドを操作するSlidesサービスの基礎の基礎
  3. GASでGoogleスライドのSlideオブジェクトの概要とその取得方法
  4. GASでGoogleスライドのテキストボックスや図形などを取得する方法
  5. GASでGoogleスライドのテキストボックスの文字列を取得する方法
  6. GASでGoogleスライドの特定のシェイプをオブジェクトIDで取得する方法
  7. GASでGoogleスライドのシェイプのテキストを置換する方法
  8. GASでスプレッドシートのデータをもとにGoogleスライドの文字列を置換する
  9. GASでGoogleスライドのプレゼンテーションをコピーする方法

祝!Google Apps Scriptが「V8ランタイム」をサポート!モダンなECMAScript構文が使えるようになった

$
0
0
runtime

photo credit: Günter Hentschel 2020 läuft! via photopin (license)

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

さて、日本時間2020/02/06の朝。

待ちに待った知らせがやってきました。

そう、「Google Apps Script」がECMAScriptに対応をしたという一報です。

正確には、「V8ランタイム」と呼ばれるJavaScriptエンジンがサポートされたのですが、GASで使える構文が一気に増えたリ、他にもいくつかの改善が加わりました。

ということで、今回はGASがV8ランタイムをサポートしたことで何が変わるのか?についてその概要をお伝えします。

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

今回、GASにどのようなアップデートがあったのか

まず、今回のGASのアップデートの概要についてお伝えします。

Google Apps Scriptではこれまで、「Rhinoランタイム」というJavaScriptを実行するエンジンを使ってきていました。

で、実際にそれで実行できるJavaScriptの構文は「JavaScript1.6~1.8」とかのバージョンのもので、正直古いもの…

今、多くのJavaScriptプログラマーが使っている「ECMAScript」と呼ばれるJavaScriptのバージョンとは、かなりの差分がありました(ECMAScriptにも「ES5」や「ES6」などのいくつかのバージョンがあります)。

さて、今回のGASのアップデートで、Rhinoランタイムに加えてGASで「V8ランタイム」というJavaScript実行エンジンがサポートされました。

V8ランタイムに切り替えることで、Rhinoランタイムで使えなかった便利なJavaScript構文のいくつかが、新たに使えるようになりました。

例えば、変数宣言や関数の記述など、根本的で高頻出な処理についての構文が追加されているので、その影響は大きいです。

また、それに加えてログや実行トランスクリプトのUIなど、開発環境のいくつかも改善されています。

以下、公式ドキュメントのページもご参考ください。

V8 Runtime Overview  |  Apps Script  |  Google Developers

V8ランタイムとは

V8ランタイムとは、Googleによって開発されたJavaScriptエンジンで、Google ChromeなどのChromiumベースのブラウザで使用されているものです。

一般で最もよく使用されているJavaScriptエンジンといって良さそうです。

V8ランタイムがもたらすメリット

当然、JavaScriptプログラマーにとってのメリットは大きいです。

ふだん使っている構文が、そのままGASでも使えるようになるからです。

ノンプログラマーの視点でもメリットがあります。

参考にするWebや書籍のJavaScriptの情報の多くを、GASに摘要して参考にすることができるようになります。

また、当然ながら便利な構文が追加されていますから、これまでよりもよりシンプル、スマートなコードを書くことができるようになります。

V8ランタイムによる主な変更点

V8ランタイムに切り替えることによる主な変更点は以下のとおりです。

  • 最新のECMAScript構文が使える
  • 新しい関数定義が検出されるようになった
  • トリガーとコールバックからオブジェクトメソッドを呼び出す
  • ログのUIの変更
  • 実行トランスクリプトのUIの変更

最も注目すべきはECMAScript構文ですが、その他にもいくつかの変更がなされています。

特にログと実行トランスクリプトのUI変更は影響があると思います。

V8ランタイムで追加された構文

V8ランタイムにより追加された構文を列挙します。

詳細は当ブログでも別記事で紹介していきたいと思います。

V8ランタイムを使うためには

V8ランタイムへの切り替え方法

スクリプトエディタでRhinoランタイムとV8ランタイムを切り替えることができます。

公式ドキュメントにはスクリプトエディタのメニュー「実行」 > 「Enable new Apps Script runtime powered by V8」で切り替えられるとありますが、本記事執筆時点2020/02/07時点ではまだ登場していません。

または、「表示」 > 「マニフェストファイルを表示」から編集ができるようになる、**「マニフェストファイル」のruntimeVersionフィールドに”V8″を指定することで、切り替えが可能です。

(runtimeVersionフィールドに”DEPRECATED_ES5″を指定することで、Rhinoランタイムに切り替えることができます。「deprecated」は「非推奨」という意味です)

コードをV8ランタイムに対応させる

Rhinoランタイムを使用して記述されたほとんどのスクリプトは、調整なしでV8ランタイム環境で実行可能です。

ただし、以下に列挙したわずかな非互換性があります。

  • for each(variable in object)は避ける
  • Date.prototype.getYear()は避ける
  • 新たな予約語class, import, exportは避ける
  • constの再代入はエラーになる(これはもともとサポートされてたがタイプエラーになるようになった
  • XMLリテラルとXMLオブジェクトは避ける
  • __iterator__を使用してカスタムイテレータ関数を構築しない
  • 解析される前に関数を呼び出さない
  • 条件付きcatch句を避ける
  • Object.prototype.toSource()を避ける

また、これ以外に細かな変更が公式ドキュメントでは示されています。

Migrating scripts to the V8 runtime  |  Apps Script  |  Google Developers

これらを使っているケースは稀だと思いますが、使用している場合にはスクリプトの修正対応が必要です。

いくつかバグがあった場合は、以下から報告することができます。

How to get help  |  Apps Script  |  Google Developers

まとめ

以上、Google Apps Scripによる「V8ランタイム」のサポートについて、その概要をお伝えしました。

2018年のGoogle Cloudの発表から2年近く待っていましたので、これから使えるのが楽しみです。

V8ランタイムによる各変更点については、このブログでもより細かくお伝えしていきます。

次回は、V8ランタイムへの切り替えの方法についてお伝えします。

新構文をさっそく試そう!GASのプロジェクトをV8ランタイムに切り替える方法
GASでV8ランタイムがサポートされたことにより、ECMAScriptの構文が使用できるようになりました。今回は、GASのプロジェクトについてV8ランタイムに切り替える方法についてお伝えしていきます。

どうぞお楽しみに!

連載目次:GASの「V8ランタイム」サポートで変わることとは

Google Apps Scriptに待ちに待ったアップデートがやってきました。「V8ランタイム」のサポート開始です。これにより、ECMAScript構文が使えるようになり、その他いくつかの改善が加わりました。このシリーズでは、V8ランタイムに切り替えることでできるようになったことについてシリーズでお伝えしていきます。
  1. 祝!Google Apps Scriptが「V8ランタイム」をサポート!モダンなECMAScript構文が使えるようになった
  2. 新構文をさっそく試そう!GASのプロジェクトをV8ランタイムに切り替える方法

新構文をさっそく試そう!GASのプロジェクトをV8ランタイムに切り替える方法

$
0
0

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

GASでV8ランタイムがサポートされたことにより、ECMAScriptの構文が使用できるようになりました。

前回、以下の記事でその全体像についてお伝えしています。

祝!Google Apps Scriptが「V8ランタイム」をサポート!モダンなECMAScript構文が使えるようになった
2020年2月6日、Google Apps Scriptが「V8ランタイム」をサポートしたという一報がありました。これにより、ECMAScript構文が使えるなど改善されましたのでその概要をお伝えします。

では、早速使ってみよう!

ということで、今回は、GASのプロジェクトについてV8ランタイムに切り替える方法についてお伝えしていきます。

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

前提

2020/02/07執筆時点では、Rhinoランタイムがデフォルトなのですが、今後V8ランタイムがデフォルトになる可能性が高いと考えています。

その際には、本記事の切り替え方法は不要となりますので、それまでの間に有効な情報となります。

Rhinoランタイムのまま新構文を試す

よし!早速、新構文を試してみよう!

ということで、切り替え作業をせずに、Rhinoランタイムのまま新構文を試してみます。

公式ドキュメントにあるV8の新構文のサンプルコードを拝借して、以下のコードをスクリプトディタで入力してみましょう。

function myFunction() {

  // V8 runtime
  let s = "hello";
  if (s === "hello") {
    let s = "world";
    console.log(s);  // Prints "world"
  }
  console.log(s);  // Prints "hello"
  
  const N = 100;
  N = 5; // Results in TypeError

}

すると…

ステートメントの前に;がありません

ステートメントの前に ; がありません。

とのエラー表示。そもそも保存すらできませんでした。

V8ランタイムに切り替える

ということで、やっぱりランタイムを切り替える必要があります(当たり前)。

V8ランタイムに切り替える方法を見ていきましょう。

あ、ちなみにランタイムの切り替えは「プロジェクト単位」になりますので、使いたいプロジェクトで都度ランタイム切り替えの作業が必要になります。

V8に切り替えるメニューはまだない

公式ドキュメントではスクリプトエディタのメニュー「実行」 > 「Enable new Apps Script runtime powered by V8」で切り替えができるとありますが、記事執筆時点ではまだそのメニューが存在しないようです。

スクリプトエディタの実行メニューにはV8への切り替えはまだない

マニフェストファイルを表示する

なので、もう一つの方法として紹介されているマニフェストファイルを設定する方法で進めていきます。

マニフェストファイルを表示するにはメニューの「表示」 > 「マニフェストファイルを表示」とします。

スクリプトエディタでマニフェストファイルを表示する

すると、「appsscript.json」というファイルが表示されます。

GASのマニフェストファイル

これがマニフェストファイルで、プロジェクトの色々な情報を設定するためのJSONファイルとなっています。

マニフェストファイルは、スクリプトファイルと同じようにエディタ上で編集できまして、メニューなどで設定できない設定項目については、このマニフェストファイルで設定することができます。

マニフェストファイルを編集する

そのマニフェストファイルですが、作成したばかりのスタンドアロンスクリプトで、デフォルトでは以下のようになっています。

{
  "timeZone": "Asia/Tokyo",
  "dependencies": {
  },
  "exceptionLogging": "STACKDRIVER"
}

V8ランタイムに切り替えるには、runtimeVersionフィールドを追加してその設定を「V8」にします。

つまり、以下のように編集します。

{
  "timeZone": "Asia/Tokyo",
  "dependencies": {
  },
  "exceptionLogging": "STACKDRIVER",
  "runtimeVersion": "V8"
}

JSONファイルの編集に慣れていない方は、前の行の最後の「カンマ(,)」を忘れないように気をつけてくださいね。

マニフェストファイルにruntimeVersionフィールドを追加

そして、保存しましょう。

runtimeVersionフィールドについて

runtimeVersionフィールドについて補足しておきます。

runtimeVersionフィールドの設定値はデフォルトは「STABLE」で、現在は「Rhinoランタイム」が摘要されます。

なので、runtimeVersionフィールドがない場合はRhinoランタイムになるということです。

公式ドキュメントによると、runtimeVersionフィールドを「DEPRECATED_ES5」の設定値にしたときについて以下のように説明されています。

Rhinoランタイムを示します。この値を設定すると、V8への自動移行も防止されます。

ゆくゆくはすべてのプロジェクトがV8に自動以降される可能性が示唆されています。

V8ランタイムで新構文を実行する

これで、冒頭の新構文のスクリプトは構文エラーとならずに、保存できるようになりました。

やったー!

GASの新構文のスクリプトを保存した

では、V8ランタイムに切り替わったところで、新構文のスクリプトを実行してみましょう!

すると…

GASを実行するとTypeErrorが発生する

おや…

TypeError: Assignment to constant variable.(行 12、ファイル「コード」)

consで定義した定数は上書き禁止ということで、エラーを吐くサンプルでしたね。

修正して再度実行する

該当の行をコメントアウトして再度実行してみます。

GASでログを待機

ログを待機しています。お待ちください…

ログ表示…見慣れないメッセージですね。そういえば「console.log」でした。

少し待つと…以下のように表示されます。

GASでログが表示された

V8ランタイムではログまわりのUIも変更になったんでしたね。

ここについては別記事で解説をしたいと思います。

まとめ

以上、GASのプロジェクトについてV8ランタイムに切り替える方法にお伝えしました。

そのうち、V8ランタイムへの切り替えは、メニューからできるようになるかも知れませんし、デフォルトがV8ランタイムになるかも知れません。

それまでの間、V8ランタイム環境を使いたい場合は、本記事を参考ください。

次回は、ログと実行のUIについて解説します。

どうぞお楽しみに!

連載目次:GASの「V8ランタイム」サポートで変わることとは

Google Apps Scriptに待ちに待ったアップデートがやってきました。「V8ランタイム」のサポート開始です。これにより、ECMAScript構文が使えるようになり、その他いくつかの改善が加わりました。このシリーズでは、V8ランタイムに切り替えることでできるようになったことについてシリーズでお伝えしていきます。
  1. 祝!Google Apps Scriptが「V8ランタイム」をサポート!モダンなECMAScript構文が使えるようになった
  2. 新構文をさっそく試そう!GASのプロジェクトをV8ランタイムに切り替える方法

GASのV8ランタイムとRhinoランタイムのログと実行のUIの違いについて比較&解説

$
0
0
log

photo credit: PeterThoeny The act of a stable genius via photopin (license)

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

**GASのアップデートで「V8ランタイム」がサポートされたことで、何が変わる?についてシリーズでお伝えしています。

前回の記事はこちら。

新構文をさっそく試そう!GASのプロジェクトをV8ランタイムに切り替える方法
GASでV8ランタイムがサポートされたことにより、ECMAScriptの構文が使用できるようになりました。今回は、GASのプロジェクトについてV8ランタイムに切り替える方法についてお伝えしていきます。

V8ランタイムへの切り替え方法についてお伝えしました。

さて、前回実行してみてログの表示について「おや?」というところがありましたよね…

今回は、その疑問について解消していきます。

GASのV8ランタイムとRhinoランタイムのログと実行のUIの違いについて比較&解説をしていきます。

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

ログのUIを比較する

まず、ログのUIについて比較をしていきましょう。

以下のコードを用意しました。

function myFunction() {
  Logger.log('Loggerクラスによるログ');
  console.log('consoleクラスによるログ');
}

ご存知の方も多いと思いますが、GASには以下2つのログの出力のしかたがありました。

  • Loggerクラスのlogメソッドによるログ
  • consoleクラスの各メソッドによるログ

それぞれ、以下の記事で紹介しておりました。

【初心者向けGAS】ログを表示するLogger.logの使い方
Google Apps Scriptの超入門シリーズ、GASプログラミングの基礎を学んでいっております。今回はログを表示するLogger.logの使い方、%sによる書式を使った方法についてもお伝えします。
Apps Scriptダッシュボードでconsoleクラスのログ出力が確認できるようになった
GASの動作確認で「ログ」使いますよね?実は、Logger.logとは別にconsoleクラスも使えると便利です。今回はApps Scriptダッシュボードでconsoleクラスによるログ出力を確認する方法です。

これらをRhinoランタイムでの環境と、V8ランタイムでの環境でそれぞれ実行して、ログの出力を比較、確認していきます。

Rhinoランタイムでのログ

まず、Rhinoランタイム環境でのログを見ていきます。

上記コードを実行して、メニューの 「表示」 > 「ログ」で確認します。

これは、多くの方はすばやくログを確認するために Ctrl + Enter のショートカットも活用されていましたよね。

すると、ログのダイアログが開き、以下のように表示されます。

Rhinoランタイム環境でのログ画面へのログ

こちらには、以下のログしか出ていません。

Loggerクラスによるログ

つまり、Logger.logメソッドによるログしか表示されず、console.logメソッドによるログは表示されません。

では、console.logメソッドによるログはどこに表示されるか?というと、ログのダイアログの下部にある

Apps Script ダッシュボードで、実行された他のスクリプトの Stackdriver ログを確認できます。

の「Apps Scriptダッシュボード」の部分をクリックして、Apps Scriptダッシュボードで実行パネルを展開して確認することができます。

Rhinoランタイム環境でのApps Scriptダッシュボードへのログ

consoleクラスによるログ

とありますね。

こちらは、console.logメソッドによるログのみ出力されました。

V8ランタイムでのログ

では、続いてV8ランタイムでのログを確認してみましょう。

お題のコードを実行して、メニューの「表示」 > 「ログ」 でダイアログを開きます。

すると…以下のようなメッセージが。

V8ランタイム環境でのログの待ち時間

ログを待機しています。お待ちください…

数秒くらい待つと、画面が切り替わり以下の表示に切り替わります。

V8ランタイム環境でのログ画面へのログ

以下のように両方のログが出力されます。

Loggerクラスによるログ
consoleクラスによるログ

つまり、V8ランタイム環境では、ログ画面への表示に時間がかかり、Loggerクラスとconsoleクラスの両方のログが表示されるということです。

一方で、Apps Scriptダッシュボードで実行パネルを展開してログを確認してみます。

V8ランタイム環境でのApps Scriptダッシュボードへのログ

こちらも、以下のように両方が出力されますね。

Loggerクラスによるログ
consoleクラスによるログ

しかも、こちらは数秒の待ち時間はなくログが表示されます。

Apps Scriptダッシュボードの実行パネルを開きながら作業をするのが良さそうですね。

実行トランスクリプトのUIを比較する

では、続いて実行トランスクリプトのUIについて見ていきましょう。

実行トランスクリプトとは、スクリプトを実行した際に、スクリプトから呼び出した命令のタイムスタンプや、スクリプトの実行時間などを確認できる機能です。

以下の記事で紹介しています。

GASのconsoleクラスのメソッドで実行時間をログ出力する方法
GASでconsoleクラスを使ってApps Scriptダッシュボードにログを出力する方法を伝えしています。今回はGASのconsoleクラスのメソッドで実行時間をログ出力する方法を紹介します。

前述のログの比較と同じコードを使って比較していきます。

Rhinoランタイムでの実行トランスクリプト

まず、Rhinoランタイムで実行トランスクリプトを確認してみましょう。

コードを実行して、メニューから「表示」 > 「実行トランスクリプト」を選択します。

Rhinoランタイム環境で実行トランスクリプトを選択

すると、以下のように実行トランスクリプトのダイアログが開き、各命令のタイムスタンプと合計実行時間が確認できます。

Rhinoランタイム環境で実行トランスクリプトを表示

V8ランタイムでの実行トランスクリプト

続いて、V8ランタイムで実行トランスクリプトを確認していきます。

ただ、メニューの「表示」を開くと…

V8ランタイム環境では実行トランスクリプトがない

「実行トランスクリプト」がありません。

そうなんです、V8では実行トランスクリプトを使うことができません。

では、Apps Scriptのダッシュボードで見られるのか…というとそうではなく、公式ドキュメントには以下のように説明されています。

Since the Executions panel doesn’t provide timestamped logs of the individual Apps Script service calls, it’s recommended that you use the console service to create appropriate log messages.

Apps Scriptダッシュボードの実行パネルでは、Apps Scriptサービスの呼び出しについて個々のタイムスタンプ付きログが出ない、と。

なので、consoleクラスのメソッドを使って、適切なログメッセージを出力しておくれ、とのことです。

まとめ

以上、GASのV8ランタイムとRhinoランタイムのログと実行のUIの違いについて比較&解説をお伝えしました。

V8ランタイムのサポート開始ではECMAScript構文に注目が集まりがちですが、個人的にはこのログ関係の変更もけっこう重要かなと思っています。

つまり、V8ランタイムに移行していくことを考えると、以下のような流れにあるかなと推測しています。

つまり、ログや実行に関する情報の出力

  • Loggerクラスではなく、consoleクラスを使う方向になっていく
  • スクリプトエディタではなく、Apps Scriptダッシュボードの実行パネルを使う方向になっていく

のではないかと。

今後も変更があるかも知れないので、注意深くキャッチしていければと思います。

さて、次回からはV8ランタイムで使えるようになったECMAScriptの新構文についてお伝えしていきます。

どうぞお楽しみに!

連載目次:GASの「V8ランタイム」サポートで変わることとは

Google Apps Scriptに待ちに待ったアップデートがやってきました。「V8ランタイム」のサポート開始です。これにより、ECMAScript構文が使えるようになり、その他いくつかの改善が加わりました。このシリーズでは、V8ランタイムに切り替えることでできるようになったことについてシリーズでお伝えしていきます。
  1. 祝!Google Apps Scriptが「V8ランタイム」をサポート!モダンなECMAScript構文が使えるようになった
  2. 新構文をさっそく試そう!GASのプロジェクトをV8ランタイムに切り替える方法
  3. GASのV8ランタイムとRhinoランタイムのログと実行のUIの違いについて比較&解説

ノンプロ研の福岡で初イベント「ノンプロ研無料体験@福岡」を開催しました!

$
0
0

nonpro-fukuoka

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

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

ついに行ってきましたよ~福岡!!

「ノンプロ研無料体験@福岡『人生100年時代!ノンプログラマーがプログラミングを学ぶ必要性とメリット』」と題してイベントを開催してまいりました。

ノンプロ研無料体験@福岡『人生100年時代!ノンプログラマーがプログラミングを学ぶ必要性とメリット』 (2020/02/11 13:30〜)
# ノンプロ研無料体験会『人生100年時代!ノンプログラマーがプログラミングを学ぶ必要性とメリット』 RPA・AIをはじめとするテクノロジーの発達により、私たちの「働く」環境も大きく代わりつつあります。また、「人生100年時代」と言われている通り、定年後もできる限り長く手に職を持って、生き生きと働き続けることを目指す...

ということで、そのレポートをお送りします!

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

ノンプロ研無料体験@福岡『人生100年時代!ノンプログラマーがプログラミングを学ぶ必要性とメリット』
RPA・AIをはじめとするテクノロジーの発達により、私たちの「働く」環境も大きく代わりつつあります。また、「人生100年時代」と言われている通り、定年後もできる限り長く手に職を持って、生き生きと働..

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

イベント「ノンプロ研無料体験@福岡」とは

ノンプロ研は、プログラマーを職業としないビジネスマンが、プログラミングを学ぶことを目的として集まっている、現在約100名ほどが参加しているコミュニティです。

ただ、どちらかというと東京を中心に活動しているので、メンバーとしてはその周辺の首都圏在住のメンバーが8割を締めています。

最近では、大阪ではメンバーも増えてきて、定期的にもくもく会なども開催しています。

とはいえ、それ以外のエリアでも孤独なノンプログラマーはいるだろ!

ということで、精力的に各エリアでノンプロ研イベントを開催しています。

これまで、仙台高松と開催してきましたが、今回はじめて「福岡」に上陸しました。

チーム福岡、立ち上げる!

福岡在住のメンバーは、イベント開催時点で2名でした。

今年に入って、ノンプロ研の企画担当 きのぴぃ さんがお仕事の関係で福岡にちょいちょいうかがうことになったので、これを機にチーム福岡を盛り上げてこう!ということで、本イベントの開催にいたります。

そして、今回は福岡在住のbirutikuさん、東京から参戦のきのぴぃさんと Kさん、そして高松から参戦のみやさんの、4名の方がノンプロ研から参加してくださいました。

また、ゲストとして以前 ノンプロ研の定例会でご登壇いただいた おっしょうさんにもご参加いただき、全体で14名の参加となりました。

地方イベントではかなり多い参加者ですね…!

みなさん、お集まりいただきましてありがとうございます。

タイムスケジュール

人生100年時代!ノンプログラマーがプログラミングを学ぶ必要性とメリット

まずは、私のほうから 人生100年時代!ノンプログラマーがプログラミングを学ぶ必要性とメリット と題してお話をさせていただきました。

時代の流れとともに、生産年齢人口の減少、高齢化などを背景に

  • 生産性を上げ続けなければいけなくなる
  • 代替されない価値を提供しなくてはいけなくなる
  • 高齢でも働き続けなければいけなくなる

ということが、かなり明確になっているので、そのためにプログラミングスキルはちょうどいいですよ~、そして学ぶにはこんなコツがいりますよ~ということをお伝えしました。

テクニカルな話ではなく、どちらかというとプログラミング初心者、かつエンジニア職指向でない方向けの話だったので、いらした皆さんの属性にマッチしていてホッとしました。

ライトニング・トーク

ノンプロ研の皆さんと、ゲストの太田さんに、5分ずつのライトニング・トークをいただきました。

みなさん、コミュニティに参加したメリットとして

  • 業務改善ツールを自分で作れた
  • 学習のモチベーション
  • Slackの情報が有益
  • 副業が増えた

などなど…ありがたや…!

また、皆さんの今後の展開なども色々と聴くことができ有益でした。

おっしょうさんも、福岡で無料のGASコミュニティを作られるとのことですので、福岡でご興味あることはぜひお声がけされてはいかがでしょうか?

無料・有料の違いがあるので簡単ではありませんが、協力して福岡地方盛り上げていければいいですね!

まとめ

以上、イベント「ノンプロ研無料体験@福岡」のレポートをお送りしました!

みやさんのレポートもありますので、ぜひ合わせてご覧くださいませ~

[ノンプロ研]博多まで行ってきました! : コンピューターお母ちゃんのブログ
うどん県からノンプロ研博多イベントに(ラーメン食べに)行ってきました!!(^ ^)>休日の昼間という、私にとってはとても参加しやすい日程でした。他の地方イベントがどんなかんじなのかなーと覗きたい心もあり。マリンライナーで岡山に出て、岡山から博多まで新幹線です。

さて、こうして新たな都市で、イベントを開催することができ、たいへんうれしく思います。

お手伝いいただいた皆さん、集まってくださった皆さん、ありがとうございました!!

今回、開催したイベントが、皆さんのこれからに少しでも良い影響が与えられれば嬉しく思います。

また、ぜひ開催したいと思いますので、そのときはどうぞよろしくお願いいたします!

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

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

Office 365 開発者プログラムとは、またどうして期限切れになったのか

$
0
0
expired

photo credit: Alexandru Paraschiv via photopin (license)

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

このところのローコード開発プラットフォームの勢いはすごいものを感じております。

ノンプログラマーに向けて「『働く』価値を上げる」をモットーに活動をしている私にとっては、絶対にキャッチアップしなければならない領域…

まず、Power Platformを使える環境を…!ということで、Office 365開発者プログラムに登録したのですが、本日「期限切れ」となって使用できなくなってしまいました。

ということで、今回はOffice 365 開発者プログラムとは何か、どうして期限切れになったのかについてお伝えします。

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

Office 365 開発者プログラム登録のきっかけ

きっかけは、私が運営を担当させていただいている「ノンプログラマーのためのスキルアップ研究会」の1月の定例会でした。

「進撃のMicrosoft」からノンプログラマーのこれからを考える
「ノンプログラマーのためのスキルアップ研究会」は、プログラミングなどのスキルを学び合うコミュニティです。先日の定例会は「進撃のMicrosoft」と題してPower Platformなど注目のサービスについて学びました!

そこで、ご登壇されたビッグサン(おおやまゆういち) さんきぬあささんによると、Power Platformを使用するためには以下のプランのいずれかに登録が必要とのこと。

  • Office 365 Business Premium(¥1,360/月)
  • Office 365 E3(¥2,170/月)
  • Office 365 E5(¥3,810/月)

ただ、弊社はひとり社長なので、家庭用の

  • Office 365 Solo(¥1,284/月)

を使っており、このままのプランではPower Platformを試すことができないのです。

それで、きぬあささんに教わった2つの方法

  1. コミュニティプラン
  2. Office 365 開発者プログラム

のいずれかでまずは試そうということになりました。

結論からいうと、コミュニティプランのほうは最初のほうでうまくいかない部分があったので、Office 365 開発者プログラムに登録し、しばらくそちらで学んでおりました。

Office 365 開発者プログラムとは

Office 365 開発者プログラムとは、開発者向けの無料のサブスクリプションで、Office 365 E5相当のサービスを受けられるプランです。

ただし、90日間という期限がありまして、その間に開発活動をしていないと期限切れになります。

開発活動をすれば、その期限が自動更新となります。

Power Appsは開発活動に入っていると思っていたのですが…実はそうではなかったようです。

Office 365 開発者プログラム登録から期限切れまで

登録と最初のアプリ開発

まず、私がOffice 365 開発者プログラムの登録したのは、2020/01/25です。

ノンプロ研のもくもく会で、Power Platformを学ぶ環境を整えようということで、その日に登録をしました。

もくもく会では、それとともにMicrosoft関連サービスのさまざまな学習を行えるサイトMicrosoft Learnの「Power Apps の概要」に沿って、学習を進めました。

Power Apps の概要 - Learn
Power Apps の基本と、組織内での使用方法について説明します。

チュートリアル通りに、Excelファイルから自動でフローリング床材の検索&編集アプリを作成して「お~~~!」となりました。

Power Appsのチュートリアル

楽器アプリを作る

また、タイミングよく2020/2/15に「Power Apps でローコーディングな勉強会 #13」が開催されるという話を聞きつけ、申し込みました。

Power Apps でローコーディングな勉強会 #13 (2020/02/15 13:00〜)
## Power Apps とは? Power Apps とは、Microsoft が提供するローコードによるアプリ作成プラットフォームです。 PowerPoint + Excel のような操作感でアプリの作成ができ、Office365製品を含め様々なサービスと容易に連携させることができます。 作成したアプリ...

「楽器アプリを作る」「ゲームアプリを作る」というテーマです。

私は、以下のようなベルのアプリを作成したり、

Power Appsのベルのアプリ

ピアノアプリを作成したり…最後はみんなで合奏したり、たいへん楽しませていただきました。

Office 365 開発者アカウントの期限切れ

しかし、この何日が後に、Microsoftから以下のようなタイトルの不穏なメールが…

WARNING: Your Office 365 trial developer subscription will expire soon」

メールは英語ですが、どうやら開発者アカウントが4/21/2020に期限切れになるという話。

そして、本文にはこうありました。

サブスクリプションの削除を避けるために、以下のような開発者のサブスクリプションを利用することをお勧めします
– Excel, Outlook, Word, and PowerPoint web add-ins
– SharePoint
– Microsoft Teams
– Microsoft Graph

いずれも触ったことがない…、今のところ頑張って勉強する予定(余裕)はない。

あと、「これ放置したらどうなるんだろ?本当に切れるかな?」みたいな悪魔の好奇心もありました。

で、予定どおり本日2020/02/21にアカウント停止となった次第です。

ていうか、2020/01/25に登録して2020/02/21に停止。

90日どころか30日も経ってないっすけど…?!

確かに以下のようにあるんだけどな…

It lasts for 90 days and is free to use for development purposes (coding solutions).

Microsoft 365 開発者 サブスクリプションを設定する
運用環境に依存しないソリューションを構築するためのOffice 365開発者サブスクリプションを設定します。

このあたりは、どういうことなんでしょうか…

よくわかりませんが、いずれにしても上記で列挙した開発に取り組まないのであれば、90日(というか30日待たないで)停止してしまうこともあるので、別の方法でトライしたほうが良い気がします。

まとめ

以上、Office 365 開発者プログラムとは何か、どうして期限切れになったのかについてお伝えしました。

ということで、このプログラムに参加し続けるには、以下のいずれかをやっていたほうが確実っぽいです。

  • Excel, Outlook, Word, and PowerPoint web add-ins
  • SharePoint
  • Microsoft Teams
  • Microsoft Graph

これらにもチャレンジしてもいいよ!という方はぜひ、開発者プログラムに登録してみてください。

次回は、その登録方法について紹介します。

どうぞお楽しみに!

ぜひ使い倒そう!Office 365 開発者プログラムの登録の手順を紹介します

$
0
0

Office 365 開発者プログラムのトップページ

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

さあ、噂のPower Platformを学ぶべく環境を整えております。

前回の記事はこちら。

Office 365 開発者プログラムとは、またどうして期限切れになったのか
Power Platformを使える環境と学びを求めていろいろとチャレンジしています。今回は、Office 365 開発者プログラムとは何か、どうして期限切れになったのかについてお伝えします。

さっそく、Office 365 開発者アカウントが期限切れしてしまいましたね!

しかし、転んでもタダでは起きません。

私のようにサボらずに、ちゃんと「開発活動」をされたい方は有効に活用できるはず…!

ということで、今回は、Office 365 開発者プログラムの登録の手順についてお伝えします。

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

Office 365 開発者プログラムとその使用時の注意

さて、Office 365 開発者プログラムは、無料のサブスクリプションで、Office 365 E5相当のサービスを受けられるプランです。

Office 365はひととおり、そしてPower BIも含めたPower Platformもすべて堪能できるというもの…素晴らしい…!

ただ、以下のような「開発活動」を継続していることが前提で、そうしないと90日(未満?)でアカウントの期限が切れてしまいます。

  • Excel, Outlook, Word, and PowerPoint web add-ins
  • SharePoint
  • Microsoft Teams
  • Microsoft Graph

なので、これらを中心とした開発またはその学習を確実に継続される方向けにになります。

詳しくは、前回の記事もご覧ください。

Office 365 開発者プログラムとは、またどうして期限切れになったのか
Power Platformを使える環境と学びを求めていろいろとチャレンジしています。今回は、Office 365 開発者プログラムとは何か、どうして期限切れになったのかについてお伝えします。

Office 365 開発者プログラムに登録するには

では、そんな方々のために、Office 365 開発者プログラムに登録する手順をお伝えしていきましょう。

まずは以下「Office 365 開発者プログラム」ページにアクセス。

ホーム - 開発者プログラム

「今すぐ参加する」から入ります。

Office 365 開発者プログラムのトップページ

使用するアカウントを選択します。

Microsoftアカウントを選択する

次の画面で、国/地域設定を「Japan」とし、会社名を入力。契約条件にチェックを入れて「次へ」をクリックします。

Office 365 開発者プログラムへのサインアップ

「ユーザー設定」として、以下のようないろいろな情報を提供します。

  • どのような業界に従事していますか?
  • 開発者としても主な目的は何ですか?
  • どのような開発に関心がありますか?
  • どの分野に関心がありますか?
    • 製品
    • テクノロジ
    • コードの言語とプラットフォーム

Office 365 開発者プログラムのユーザー設定

Office 365 開発者プログラムのユーザー設定 その2

Office 365 開発者プログラムへの登録は完了です。

Office 365 開発者向けサブスクリプションをセットアップ

よし!早速Power Platformだ~と思ったのですが、まだ手順があるようです。

Office 365 開発者向けプログラムへようこそ

まだサブスクリプションを開始していない場合は、新しいOffice 365 開発者向けサブスクリプトションをセットアップして、メンバーシップを開始することをお勧めします。

よくわかりません…

ただ、「閉じる」をすると、次の画面でこうあります。

すべての機能にアクセスする前に、自分自身にライセンスを割り当てる必要があります。

これですね。

ということで、Office 365 開発者向けサブスクリプションをセットアップを進めていきましょう。

まずは、「サブスクリプションのセットアップ」をクリック。

Office 365 開発者向けサブスクリプションをセットアップ その1

ダイアログが開くので以下入力して「続行」をクリックします。

  • 国/地域設定
  • ユーザー名
  • ドメイン
  • パスワード
  • パスワードの確認入力

Office 365 開発者向けサブスクリプションをセットアップ その2

ドメインとユーザー名を入力すると「ユーザー名@ドメイン.onmicrosoft.com」というアカウントが表示されます。

どうやら、開発者プログラムではこのアカウントを使うんですね。

なので、ここで登録したアカウント名とパスワードを忘れずにどうぞ。これからすべてのOfficeライフで活用できます。そう、期限が着れるまでは…

なお、ドメインは、すでに使われているものは登録することができません。

続いて、電話番号(SMS)によるセキュリティチェックです。

  • 国別コード
  • 電話番号

を入力して、「コードの送信」をします。

セキュリティのための電話番号の追加

コードを送信するとコードの入力&「セットアップ」ボタンが押せるようになるので、SMSで届いたコードを入力して、クリック!

これで、サブスクリプションが使用できるようになります。

Office 365 開発者サブスクリプション

25ユーザーライセンス…いけるっぽいっすね。大盤振る舞いっす。

有効期限「2020年4月25日」ってあるんだけどな…

まとめ

以上、Office 365 開発者プログラムの登録の手順についてお伝えしました。

開発活動およびその学びを得たい方、ぜひご活用ください。

私は残念ながら期限が切れてしまいましたので、別の方法を模索します。

また進捗あればご報告しますね。

どうぞお楽しみに!

ファミリー向けプログラミング研究会「親子ST大会&生きものロボット体験会」を開催しました

$
0
0

ファミプロでScratch

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

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

先日、2月度の家族向けイベント「ファミリー向けプログラミング研究会 Vol.9 親子ST大会&生きものロボット体験会」を開催しましたので、そのレポートをお送りします!

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

ノンプロ研 ファリー向けプログラミング研究会 Vol.9 親子ST大会&生きものロボット体験会
ノンプログラマーのためのスキルアップ研究会、通称「ノンプロ研」。家族でプログラミングを学ぶイベント「ファミプロ」を開催しています。今回は子供達のプレゼン大会とユカイ工学さんのユカイな生きものロボッ..

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

「ファミリー向けプログラミング研究会」とは

「ファミリー向けプログラミング研究会」は、コミュニティ「ノンプロ研」内で月一ペースで開催しているイベントで、ノンプロ研所属のメンバーの子どもたちも含めてプログラミングを学ぼうというイベントです。

通称「ファミプロ」と呼んでいます。

2020年4月から義務教育でプログラミング教育がはじまるということもあり、大人たちが学んでいる場で子どもたちも学べたら、すごく良い機会になるのでは?ということからスタートしました。

昨年5月から毎月1回ペースでイベントを開催していて、2歳から大人まで幅広い年代の人たちが、それぞれのプログラミングを学んでいます。

通常は「親子もくもく会」ということで、未就学児であればプログラミングおもちゃ、小学生であればScratch、大人であればGASとかロボット、というようにそれぞれの課題を持ち寄って学び、発表をします。

しかし、今回は特別編。

2つの新たな取り組みをしてみました。

親子ST大会で子どもたちがプレゼンしました

ひとつ目は「親子ST大会」

大人たち向けのイベントで、飲食をしながらライトニングトークをする「Beer Talk」というイベントがあります。BTと略します。

この話を耳に入れた、とあるお友達が「自分たちもやりたい!」と手を挙げてくれたんですね。

アルコールは入れるわけにはいかないので、「Soft drink Talk」ということで、勝手にST大会とネーミングしました。

今回は、2歳から小学3年生までの子どもたちが、スライドを使ってプレゼンをしてくれました。

みんな、立派にプレゼンができているではありせんか…!

もちろん、スライドの作成やプレゼンの進行はお父さんたちがサポートしていますが、破綻したり、わけわからなくなることはなく、むしろちゃんと伝えたちことが伝えられてて本当にすごいと思います!

さらに、大人たちに倣って、自分たちで質疑応答もしはじめるという…!

もう、思い出しただけで感動しますよ。

ぜひノンプロ研に入ったら過去動画のアーカイブをご覧いただきたいです。

大人の学びの場に子どもたちを連れてくるのは正解だったと思います。

また、ST大会やりたいですね!

生き物ロボットをScratchで動かすワークショップ

さて、後半ですが、以前もファミプロでお世話になった株式会社ユカイ工学さまをゲストにお迎えしました。

ノンプロ研のファミプロで「ロボット作り体験&ロボット操作もくもく会」を開催しました
先日開催されたノンプロ研の家族向けイベント「ファミプロ」は、株式会社ユカイ工学さんの全面協力のもと「ロボット作り体験&ロボット操作もくもく会」を開催することができました。今回はそのレポートをお送りします。

今回は、「ユカイな生きものロボット」をScratchで動かす未発売の新商品「ココロキット」の体験ワークショップを開催いただきました。

ココロキットは、2020/3/1に発売される、Scratchなどのプログラミングで「ユカイな生きものロボットキット」を無線で操作できるキットです。

ユカイ工学がエデュケーション事業を拡充 初めてのロボット作りからプログラミング学習、無線操作できる「ココロキット」も発売 | ロボスタ - ロボット情報WEBマガジン
数多くのロボットやIoTプロダクトを企画・開発するユカイ工学株式会社が、初めてのロボット制作やプログラミング技術の学習を支援するエデュケーション事業を本格始動する。 2020年3月に初開催となる「小学生ロボコン」に向け、初めてロボット作りを体験する子供用に同社が開発した「ユカイな生きものロボットキット」は、2019年1...

「ユカイな生きものロボット」自体は2つのモーターを動かすかどうかというシンプル出力操作なので、感想としては世界でいちばん簡単なロボットかも…と思いました。

ですが、入力としてScratchで提供されている機能である、ビデオモーション、音声入力などを活用したり、機械学習も組み合わせたりすることができ、幅広い要素を学べるし、それこそそのアイデアは無限大…

小学生たちもちゃんとScratchでロボットを動かせるようになって、まあこれは楽しい…!大人でも十分に楽しいかも…!!

発売が楽しみです!

まとめ

以上、「ファミリー向けプログラミング研究会 Vol.9 親子ST大会&生きものロボット体験会」のレポートをお送りしました。

3月は新型肺炎などの影響を考えてオフラインでのファミプロイベントはお休みしますが、たぶんみんな「ココロキット」や、それぞれの課題をじっくり取り組めるんでしょうね。

また、家族向けでいうと4月は親子もくもく会、5月は「もくもく合宿」を予定しています。

引き続き、親子で楽しく学べる機会も提供していきますので、皆さんどうぞご参加くださいね。

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

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

パーフェクトExcel VBAを出版して見えたこと

$
0
0

パーフェクトExcel VBA

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

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

先日、定例会が行われたのですが、今回のテーマは「パーフェクトExcel VBAを出版して見えたこと」

久しぶりに、私めが登壇させていただきまして、昨年11/25に発売された本書について語らせていただきました。

ということで、自作自演ですがレポートをさせていただきますね。

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

ノンプロ研定例会Vol.28「パーフェクトExcel VBAを出版して見えたこと」
ノンプロ研主宰のタカハシが企画に半年、執筆に1年半を要した「パーフェクトExcel VBA」が発売されました。・書いている間、どういうこと思ってたの?・どうしてそこまで苦労して書いたの?・書き終わ..

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

パーフェクトExcel VBAがどれだけ大変だったかをアピール

今回、本書「パーフェクトExcel VBA」について企画→執筆→校正→販促の順番に、制作ストーリー&秘話を伝えさせていただきました。

企画

そもそも本書は、企画時点でものすごい苦労しました。

企画を作ってトライした回数は8回、企画通過までにかかった期間は8ヶ月かかりました。

「課題したいニーズ」は当初からわりと固まっていたのですが

  • VBAはライバル書が非常に多い、かつ売れ筋もある程度見えている
  • しかし一方で、本書については、類書がほとんどない

という状況で、どのような目次構成にして、コンセプトと差別化ポイントの訴え力を上げるか、みたいなところの磨き上げにものすごい時間がかかったという印象です。

つきあってくださった編集さんに感謝です。

執筆

ようやく通過した後の話は、以下の記事で書いてあるとおり、10ヶ月、558時間かけて、31.7万文字をひたすら執筆するという…

書籍「パーフェクトExcel VBA」で書いた文字数とかかった時間を晒します
2019/11/25に「パーフェクトExcel VBA」が発売されます。3冊目の著作となった本作。この記事では、それを書き上げるのに、どれだけの文字を書いて、どれだけの時間をかけたのか、晒していきます。

本書はもちろんそのボリュームも大変な理由だったのですが、以下のような状況がより一層それに輪をかけてました。

  • 公式ドキュメントに書かれていないことがある
  • オブジェクトブラウザで非表示または発見できないことがある
  • ライブラリによってコンセプトが違う
  • 昔からあるもので捨てきれずに仕方がなく残っている(とおぼしき)ものがある
  • 省略しまくれるので何がどう省略されているのか探偵しなければいけない
  • 複数のクラスに同じような機能を持つメンバーが存在することが多い
  • 参考になる文献があまりない

書籍を書く場合、自分の経験や感覚はもちろん大事なのですが、それを証明するためにエビデンスの裏付けをとるのが最も重要な作業のひとつです。

書籍となると、やはり権威みたいなところがあって、みなさん信用して買ってくださるので、それに応えるべきですもんね。

ただ、今回、そのエビデンスがなかなか見つからなったり、つじつまが合わなかったり…汗

そうなると、実験をしたり、複数の現象や文献の解釈を組み合わせたりと、ものすごい時間のかかるステップを踏まなければいけなくなってしまいます。

ということで、とっても時間かかっちゃいました。

正直、同じような言語が別にあったとしても、やりきる自信はないっすw

校正・販促

あとは、校正・販促という工程に入ります。

大きな作業はないのですが、本書の場合、発売前のこの時期、ものすごく怖くなりました。

こんなふうに考えちゃったんです。

  • もし売れなければ、VBAの体系をメインに据えた書籍が、より出版されづらくなるかも知れない
  • もし売れなければ、編集さんの努力とパーフェクトシリーズにドロを塗ってしまう
  • もし売れなければ、自分のこの2年の努力も浮かばれなくなる
  • クリティカルな間違いやミスリードがあったら、読者に迷惑をかけてしまう
  • あちこちに間違いがあって、ツイッターやAmazonレビューが炎上したらどうしよう

今回、過去2冊よりも断然この恐怖が大きくて、自分でもビックリしました。

そんな思いで発売11/25を迎えたわけです。

パーフェクトExcel VBAを出版して見えたこと

おかげさまで、本書は発売前から評判もよく、発売2週間で増刷がかかりました。

書籍「パーフェクトExcel VBA」発売についてのお知らせ
Excel VBAの本格的な解説書「パーフェクトExcel VBA」が技術評論社さまから発売されました!本ページでは、本書のお知らせ、書評などの情報を発信していく特集ページです。

Amazonランキングは数千位くらいをキープしていて、執筆時点ではレビューも36件で4.3と非常に良い評価をいただいています。

パーフェクトExcel VBAのAmazonランキング推移

正直、ホッとしております。

それで、執筆・出版を終えてみて見えたことはこちらです。

「アップデートがないのは、正直きつい」

これです。

書籍は日本語で数千冊あり、当ブログでもTop30記事のうち20記事がVBAです。VBAがニーズのある言語であることは間違いありません。

当然、ニーズがあるのであれば時代に合わせて、直すべきところはアップデートをしたいのです。PythonやGASのように。

それは、Microsoftさんもわかっているはず。

しかし、その仕様上、過去を捨てられない、変えることができないというジレンマ、これがVBAにはあります。

VBAはイケてない部分がいっぱいあって、おかげでムズいんです。

かといって、その事実を見せ続けないようにしておくと、実際にそれにぶち当たったユーザーたちは、立ち往生してしまうわけです。

ですから、先駆者たちはその向き合った結果、得られた知識を、後から来る人たちにちゃんと伝えるべきと思うのです。

それによって

  1. VBAとよりうまく付き合える人が増えて
  2. よりVBAとそのユーザーの評価が上がり
  3. それがキャリアにもプラスにつながり
  4. そしてそれを見て門を叩く人が増える

そんな良いスパイラルを作るべきと思うわけです。

本書が、その理想にどれだけ役に立つのかはわかりませんが、初動として少しや役に立てるかなというワクワク感は味わえています。

お付き合いいただいた、出版社さん、書店さん、ノンプロ研の皆さんに感謝です。

まとめ

以上、パーフェクトExcel VBAを出版して見えたことについてお伝えしました。

やっと、ひと仕事が終わった感じがあります。

ただ、GASやPythonの書籍が動いていますし、もちろんVBAの啓蒙も引き続きしていきたいと思います。

引き続き、みなさんの『働く』の価値を上げるべく、書籍という武器もうまく使っていきますね。

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

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

GASの「V8ランタイム」アップデートを受けて私がやるべきことリスト

$
0
0
todo

photo credit: hollyzade To Do via photopin (license)

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

2020/2/5にGASのアップデートがあり「V8ランタイム」がサポートされました。

以下の記事でお伝えしているとおり、このアップデートでのメリットはたくさんあります。

祝!Google Apps Scriptが「V8ランタイム」をサポート!モダンなECMAScript構文が使えるようになった
2020年2月6日、Google Apps Scriptが「V8ランタイム」をサポートしたという一報がありました。これにより、ECMAScript構文が使えるなど改善されましたのでその概要をお伝えします。

しかし、私の立場でいうと、いくつかの問題があります。

これまで山ほど書いてきたブログの記事、上梓した書籍、講座用のスライド…すべて古い「Rhinoランタイム」向けのコードで書かれているのです。

どうしましょ?

約1ヶ月、色々と調べたり検証したり考えをまとめたりしましたので、この記事でお伝えできればと思います。

ということで、GASの「V8ランタイム」アップデートを受けて私がやるべきことリストです。

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

講座用のスライドはすべて作り直しました

私は、企業向け、個人向けにGoogle Apps Script講座を提供しています。

個人向けは、コミュニティ「ノンプロ研」内で開催しているもので、初心者講座が2時間×全6回、中級講座が2時間×全6回です。

企業向けは、ある程度要望に合わせてカスタマイズしますが、だいたい2時間×10~15回でお受けすることが多いです。

これら、作成したスライドはRhinoランタイム向け旧コードなわけでした。

しかし、この1ヶ月。全てのベースのスライドをV8ランタイム向けに作り直しました!

なので、もうV8ランタイム版の講座を提供可能です。

まず、ノンプロ研初心者講座GASコース第5期はV8ランタイムバージョン&ご時世的に完全オンラインでお届けします。

ただいま、まさに申込受付中なので、以下ページをチェックしてみてください。

コミュニティ連携型!ノンプロ向けプログラミング講座開講のお知らせ
コミュニティ「ノンプログラマーのためのスキルアップ研究会」と連携した、VBAおよびGoogle Apps Script初心者講座(全6回)を開催させていただくことになりましたのでお知らせします。

企業向け研修もV8ランタイムでの提供を開始していますので、検討されている企業様、ぜひお問い合わせくださいませ。

「V8 ランタイム」に対応!最新版Google Apps Scriptの研修を提供開始しました
Google Apps Scriptはアップデートにより「V8ランタイム」をサポートしました。弊社では、それを受けましてV8対応の最新版のGASプログラミング研修を準備させていただきましたので、ご案内差し上げます。

書籍「詳解!GoogleAppsScript完全入門」は改訂版を作ります

GASの書籍としては、2017年12月に「詳解!GoogleAppsScript完全入門」を上梓しました。

書籍「詳解!Google Apps Script完全入門」発売についてのお知らせ
「詳解! GoogleAppsScript完全入門 ~GoogleApps & G Suiteの最新プログラミングガイド~」という本を書きました!本ページでは、本書のお知らせ、書評などの情報を発信していく特集ページです。

全464ページありますが、当然すべてのページでRhinoランタイム向けの構文、旧コードを紹介しています。

実は、以前から改訂版の打診は出版社さんからいただいていたのですが、「ES6が来るから待ってたほうがいいです」と待っていただいていたのです。

まじ、待っててよかった…

でも、実際にV8ランタイムになったら、これはもう膨大な作業量が待っています。

コードはほぼ作り直し、他のアップデートも多数あり、UIも変更になっているのでスクショもほぼ撮り直し。

でも、頑張ってGAS本作り直します!

作業状況については、私のTwitterアカウントで 「#GAS本」をつけてつぶやきますので、よろしければフォローください。

また、コミュニティ「ノンプロ研」では、修正原稿などをいち早くご覧いただけますので、興味ある方はご入会を!

作業量も多く、出版物でもあるので、どうしても一定の期間が必要になるのですが、色々と知恵をしぼって、工夫をこらして、早めにお届けできるようにがんばります。

ブログは人気記事から100記事近くリライトします

さあ、一番重い作業がこれ。当ブログの記事です。

ざっとカウントしたら、全部で300記事以上ありました。

まじか~

今でいうと、GASに関しては新規記事を書くよりも、過去の人気記事をV8にリライトするほうが、GASユーザーとしては重要だろうと考えました。

以下表のシリーズ、全94記事をV8版にリライトしていこう!と考えています。

シリーズ 記事数 メモ
Botシリーズ 24記事 初心者向け
コーディングガイドライン 1記事 随時更新
メルマガシリーズ 9記事 CamCard最近使ってない
高速化 1記事
フォームシリーズ 8記事
トリガーシリーズ 3記事
配列シリーズ 6記事 完結していない気がする
クラスシリーズ 15記事 ラスボス
Moment.js 8記事
Webページシリーズ 16記事 google.script.runの不具合報告あり
備品購入申請フォーム 8記事 完結していない気がする

Botシリーズとコーディングガイドラインは完了したので、残り70記事くらいですね。

終わり次第、表に「済」をつけていきます。

その他、ニーズのあるシリーズだなと思ったらリライトリストに追加していきます。

当ブログ開始以来、最も新規記事公開の少ない時期が続くかも知れません。

まとめ

以上、GASの「V8ランタイム」アップデートを受けて私がやるべきことリストについてお伝えしました。

講座はもう書き直したので良いですが、書籍とブログ…重いっすね。

今年の重いカルマ、ワンツーフィニッシュです。

宣言して逃げ道を断つスタイルです。

ということで、頑張っていきますので、どうぞお楽しみに!

連載目次:GASの「V8ランタイム」サポートで変わることとは

Google Apps Scriptに待ちに待ったアップデートがやってきました。「V8ランタイム」のサポート開始です。これにより、ECMAScript構文が使えるようになり、その他いくつかの改善が加わりました。このシリーズでは、V8ランタイムに切り替えることでできるようになったことについてシリーズでお伝えしていきます。
  1. 祝!Google Apps Scriptが「V8ランタイム」をサポート!モダンなECMAScript構文が使えるようになった
  2. 新構文をさっそく試そう!GASのプロジェクトをV8ランタイムに切り替える方法
  3. GASのV8ランタイムとRhinoランタイムのログと実行のUIの違いについて比較&解説

プログラミング講座を通して提供する学ぶ機会と教える機会

$
0
0

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

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

先日、ノンプロ研のイベントとして「初心者講座GAS第4期卒業LT大会」が行われました。

2020年1月から3月まで開催された、ノンプロ研初心者講座GASコース第4期の成果発表として、受講者の皆さん、TA&講師陣の10名がプレゼンを行いました。

ということで、今回はノンプロ研「初心者講座GAS第4期卒業LT大会」についてレポートをしたいと思います。

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

ノンプロ研講座「初心者講座GAS第4期卒業LT大会」
ノンプロ研初心者プログラミング講座GASコース第4期の受講者、TA、講師の皆さんにLT(ライトニングトーク)プレゼンによりその成果を発表していただくという素敵企画です。10名の皆さんに卒業発表をい..

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

ノンプロ研プログラミング講座とは

ノンプロ研ではVBA・GAS・Pythonの3つの言語についてプログラミング講座を開催しています。

講義と演習で、プログラミングを学ぶ全6回の講座と、プレゼンで発表を行う「卒業LT大会」の計7回で構成されています。

講座の開始前と合間には、けっこうな量の宿題をプレゼントするので、それをこなしていただくのですが、その際の提出や質問、またそれに対する講師やTAのフォローをSlackでやるという流れになっています。

今回の初心者講座GASコース第4期でいうと、詳細の日程は以下のとおりです。

  1. 01/22(水) はじめてのプログラム、変数、演算、データ型
  2. 01/29(水) 制御構文
  3. 02/05(水) 関数、配列
  4. 02/12(水) オブジェクト
  5. 02/19(水) セル、シート、ブックの操作
  6. 02/26(水) スプレッドシートの操作実践編
  7. 03/11(水) 卒業LT大会

ちなみに、初心者講座Pythonコース第2期と、V8ランタイム対応した初心者講座GASコース第5期の受講者募集をしていますので、よろしければ以下ページを覗いてみてください。

コミュニティ連携型!ノンプロ向けプログラミング講座開講のお知らせ
コミュニティ「ノンプログラマーのためのスキルアップ研究会」と連携した、VBAおよびGoogle Apps Script初心者講座(全6回)を開催させていただくことになりましたのでお知らせします。

初心者講座GASコース第4期について

さて、今回も前回に引き続き、講師をetauさんにお願いしました。

私はとよおかさんとともに、ティーチング・アシスタント(TA)という立場で参加。

(といっても、ほとんど私は何もせず、会場と機材を準備する「機材セッティングおじさん」でした。)

受講者は全部で15名に参加いただきました。

今回の卒業LT大会には講師・TA含めて10名に登壇いただきました。

受講された皆さんの成果物は

講座としては、卒業LT大会のときに、何らかの成果物について発表できるというのをひとつの目標としています。

それぞれ皆さんのペースや、やりたいことの難易度もあるので、必ずではないのですが、今回はバリエーション豊かでした。

例えばこんな感じです。

  • 見積書作成や発注処理などの自動化
  • スプレッドシートの予定をカレンダーイベントとして追加
  • ゴミ捨ての情報を教えてくれるLINE Bot
  • 仕訳の集計
  • 店舗売上の集計
  • 楽天APIから商品情報の収集

みなさん、レベルが高いっすね~!

実務に関する目標があるとメキメキ伸びるので、安心です。

あとは、それを続けられるように、ノンプロ研のいろいろなコンテンツでサポートできればと思います。

教える機会を創出する

ノンプロ研講座の裏テーマとしては、メンバーの皆さんに講師やTAなど「教える機会」を提供するというのがあります。

とよおかさんは、一時期の繁忙期でGASにほとんど触れられない時期があったけれども、今回のTAをきっかけに一気にGAS熱が加熱したそう。

すごく良いタイミングだったし、外側から見てても加熱しているのがわかったので、うれしいですよね。

そしてetauさんは今回「講師の卒業」を発表されました。

「止まれば老害」つまり同じことを繰り返し続けると成長が止まってしまうので、次のステージに進まれると。

コミュニティ見守りおじさんとしては、etauさんのために次の何かを用意しなければな~と思っております。

まとめ

ノンプロ研「初心者講座GAS第4期卒業LT大会」についてのレポートをお送りしました。

今回も総じて収穫の多い講座となりました。

今はご時勢的にオフラインのイベントは開催しづらい状況ですが、次回の講座はZoomによる完全オンラインで提供をしていきます。

これからも、あの手この手を駆使して学ぶ機会、教える機会を提供していきますので、今後ともよろしくお願いいたします~!

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

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

ノンプロ研×Zoomでコミュニティ活動の可能性が広がりつつある

$
0
0

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

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

先日の定例会は昨今の事情も踏まえて、ノンプロ研創立以来初、Zoomを使った「完全オンライン」で実施しました。

ということで、今回はZoomによる「【完全オンライン開催】ノンプロ研Zoon In」の開催レポートをお送りします。

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

【完全リモート開催】ノンプロ研定例会Vol.29「ノンプロ研Zoon In」
コミュニティ「ノンプログラマーのスキルアップ研究会」では初のZoomによる完全リモート定例会です! 普段、直接会うことができない全国のノンプロ研メンバーの話を聴けるチャンス!

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

ノンプロ研Zoom Inとは

ノンプロ研は、オフライン活動を大事にするコミュニティでして、最近では以下のようなイベントをオフラインで行うようにしていました。

  • 定例会: 月1回のメインのオフラインイベント、プレゼンやLTなど
  • もくもく会: 10人くらいでそれぞれの課題に取り組む勉強会、東京で月3回&大阪で月1回
  • プログラミング講座: 全6回(毎週または隔週)のプログラミング講座+卒業発表会
  • 分科会: その他テーマごとやエリア別の不定期イベント

ノンプロ研のイベントは、以下のような特性があり、そのままオフラインイベント開催し続けるかどうか?はかなり悩ましいところもありました。

  • 規模感的にはそれほど大きくない
  • 特定のメンバーだけが参加可能
  • リモート配信や動画アーカイブがあり現地参加しなくても視聴できる

一方で、ノンプロ研の性質上、どうしても活動が首都圏中心になりがちなのですが、大阪をはじめ福岡、札幌、高松など各地のメンバーも増えてきています。

各地のメンバーがフラットに参加できる「オンラインイベント」のアイデアも出てきていた頃合いでした。

じゃあ、一発試しということで、Zoomを使った完全オンラインの定例会をやってみようじゃないか、ということで企画したので、今回の「ノンプロ研Zoom In」でした。

ノンプロ研Zoom Inのイベント概要

まず、ツールとしては昨今流行りのオンラインビデオ通話サービス「Zoom」を使いました。

こんな理由で…まぁ、ほぼZoom一択でした。

  • 以前からリモート配信で使っていて慣れている
  • Proアカウントなら100名まで時間無制限
  • クラウドに録画可能で編集担当に共有が簡単

画面共有をしてプレゼンをしているところは、こんな感じです(録画した動画からキャプチャしたのでリアルタイムと全く一緒の画面ではないですが)。

ノンプロ研Zoom Inの動画キャプチャ

さて、今回は、どちらかというと首都圏以外のメンバーを中心に10分程度のLTをしていただきました。

福岡、千葉、北海道、大阪、兵庫、東京と6つのエリアから全7枠のご登壇をいただきました。

ラインナップはこちら。

  • あいみょんの曲でクラスを作ってみた
  • Yahoo Fantasy Sports API
  • ノンプロ研講座同時受講のススメ
  • ノンプロ研に入った理由
  • GASとPythonの実務活用例
  • ノンプロ研ペアプロ部の紹介
  • LINEとCloud Vision APIで文字起こし

レベル高いっすよね…!

Zoomを使ったオンラインイベントの収穫

今回、試しにZoomを使ったオンラインイベントを開催していくつかの収穫がありました。

普段聴けないメンバーの話が聴ける

まず、一番の収穫はもちろんこれです。

普段なかなか聴けないメンバーの話が聴けます。

Zoomで気軽に質問とかも投げられるので、札幌と福岡で質疑応答なんてのも、いとも簡単にできてしまう。

そして、地域関係なく全員フラットに参加できるというのは、かなり満足度高いなと。

もちろんオフラインの良さもあるのですが、両方やって損はないと感じました。

気軽に参加できて参加率がめちゃめちゃ高くなる

案外皆さん出たり入ったりしてたのですが、一番多いときでは36名の方がルームに入っていました。

おそらく、過去のオフラインイベントでは、そこまで集まったことはないかなと思います。

自宅から参加が多かったのですが、会社から、漫画喫茶から、場合によっては飛行機→バスと移動しながら参加というメンバーもいました。

スマホとイヤホンさえあれば、イベントに参加できるなんて…すごい。

子どもを見ながらとか、家事をしながらとかも参加できますよね。

多様な参加の仕方ができるな~と感心しました。

チャット&Zoom飲み会が異様に盛り上がる

主宰としては、できれば感想や反応はTwitterで、せめてSlackでして欲しいというのはあったのですが、Zoomのチャットの異様な盛り上がり…

なぜだか理由はハッキリしないのですが、とにかくワイワイ盛り上がってました。

登壇者もその反応を見て返したりと、オフラインにも負けるとも劣らないリアクティブな時間帯もありました。

本当はTwitterで盛り上がってほしいのですが、まあ楽しいならそれはそれでいいか…

あと、イベント後の「Zoom飲み会」も盛り上がりましたね。

人数が多かったので2ルームに分かれていましたが、残っているメンバーは日付超えるまで残っていましたね。

帰る道中を気にしなくていいのは、確かに気が楽ですよね。

ノンプロ研のオフラインの取り組み

さて、初めての完全オフライン定例会は無事に成功したと言ってよいと思います。

他にも、Zoomを使った取り組みを進めています。

Zoomもくもく広場

まず、「Zoomもくもく広場」

主に毎日19時以降はZoomのルームを使用できるようにしていて、もくもくとプログラミングの勉強をしたいメンバーが集まっています。

ZoomチャットやSlackでコメントをしたり、画面共有をしたりしながらもくもくをしていて、なかなか広場がにぎわっています。

オンラインプログラミング講座

初心者プログラミング講座を完全オンラインで開催します。

3/25から開始のPythonコースと、4/6から開始のGASコースです。

いずれも、全6回の講座と卒業発表会を、全てZoomで行います。

コミュニティ連携型!ノンプロ向けプログラミング講座開講のお知らせ
コミュニティ「ノンプログラマーのためのスキルアップ研究会」と連携した、VBAおよびGoogle Apps Script初心者講座(全6回)を開催させていただくことになりましたのでお知らせします。

地域や時間、場所などの関係でこれまで受講が難しかった方にも機会が提供できるというのは、素晴らしいことと思います。

まとめ

以上、Zoomによる「【完全オンライン開催】ノンプロ研Zoon In」の開催レポートをお送りしました。

ノンプロ研+Zoomでコミュニティ活動の可能性がぐっと広がりつつあるのを感じています。

ピンチの状況であったとしても、何事も可能性を検討して、やってみるということですね。

大変勉強になってます。

さて、今後もようすを見ながらですが、状況に合わせて良い学びの機会を提供していきたいと思います。

今後ともよろしくお願いいたします~

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

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

【4/14開始】「GoogleAppsScript完全入門」に関するクラウドファウンディング企画のお知らせ #GAS本

$
0
0

GAS本クラファン

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

突然ですが、4/14からクラウドファンディングのプロジェクトをスタートしますので、お知らせです!

プロジェクトのタイトルはこちら。

「最新の『Google Apps Script完全入門』をいち早く世に届けたい!」

公開前のプロジェクトの限定公開ページはこちら!

最新の『Google Apps Script完全入門』をいち早く世に届けたい!
スプレッドシートやGmailなどを操作することができるプログラミング言語Google Apps Scriptは去る2月に大幅なアップデートがありました。それに伴い、唯一のバイブルともいえる「詳解!Google Apps Script完全入門」の第2版の早期出版を実現するのを目指すプロジェクトです。

あ、限定公開ページで「お気に入り」をしておいていただけると、超よろこびます(公開時にメールでお知らせします)!

さて、今回の記事では、このクラウドファンディング企画がどういったものなのか、またなぜこのプロジェクトを立ち上げたのかについてお伝えします。

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

クラウドファンディング企画の概要

今回のクラウドファウンディングの概要は、このようなものです。

拙著「詳解! GoogleAppsScript完全入門」の第2版の早期出版を実現するために、皆さまから事前にご購入やご支援をいただきたい

「なんでそんな早く出さなきゃいけないの?」とか「そんなのタカハシが頑張れば早く出せるでしょ」とか…という話はたしかにあるのですが、色々な想いや事情がありまして…汗

その、色々な想いや事情について、以降で詳しくお伝えしていきますね。

「詳解! GoogleAppsScript完全入門」について

今回のクラウドファウンディング企画は、私が執筆してすでに出版されている書籍「詳解! GoogleAppsScript完全入門」に関するものです。

この書籍は、スプレッドシート、ドライブ、Gmail、カレンダーなどを操作できるプログラミング言語Google Apps Scriptの初心者ノンプログラマー向け入門書です。

通称「GAS本」と読んでます。

書籍「詳解!Google Apps Script完全入門」発売についてのお知らせ
「詳解! GoogleAppsScript完全入門 ~GoogleApps & G Suiteの最新プログラミングガイド~」という本を書きました!本ページでは、本書のお知らせ、書評などの情報を発信していく特集ページです。

初版が発売されたのは、2017年12月。

たくさんの方に読んでいただきまして、増刷を重ねること5回。

今でも好調に推移していて、Amazonのランキングでは書籍全体で数千番台につけています。

GASに関する書籍が少ないということはありますが、とてもありがたいことですし、GASの需要があるというのは嬉しいことです。

GAS本、第2版のお誘い

実は出版社さんからは、かなり前から「GAS本の第2版を書きませんか?」というご相談をいただいていました。

しかし、私は待っててもらうようにお願い続けていました。

というのも、今から約2年前の「Google Cloud Next ’18」にて、「GASの構文をモダンなものにアップデートするよ」という発表がなされていたからです。

Notes on the future of Google Apps Script from Google Cloud Next ‘18 #GoogleNext18
At Google Cloud Next ‘18 it was great to see and hear about a number of G Suite and Google Apps Script updates. This post highlights a number of launched and fu...

記事にはこうあります。

A common request is updating the JavaScript syntax to be able to use more modern features and libraries.

せっかく第2版を執筆しても、GASの構文が刷新されてしまったら、また書き直さないといけません。

なので、モダンな構文が使えるようになってから、第2版の企画を進めたほうがよかったのです。

突然やってきた「V8ランタイム」

長らく待たされていたのですが、その「Xデー」は突然やってきました。

2020年2月5日に、GASのJavaScriptエンジンとして「V8ランタイム」がサポートされたことで、モダンな構文が一気に使えるようになりました。

祝!Google Apps Scriptが「V8ランタイム」をサポート!モダンなECMAScript構文が使えるようになった
2020年2月6日、Google Apps Scriptが「V8ランタイム」をサポートしたという一報がありました。これにより、ECMAScript構文が使えるなど改善されましたのでその概要をお伝えします。

これにより、GASのコードが書きやすくなり、世の一般的なJavaScriptと同じようにコードが書けるようになりました。

V8ランタイムを迎えてタカハシがやるべきこと

しかし、タカハシにとっては大忙しの日々のはじまりです。

過去に残してきた古い情報たちを刷新するというタスクが大量に生まれましたから。

主に以下の3つです。

  1. 講座で使用している初級GAS講座、中級GAS講座、合計12×2時間分のスライド
  2. ブログで公開している300以上のGAS関係の記事
  3. 全464ページの書籍「詳解! GoogleAppsScript完全入門」

1の「講座」については、本記事執筆時点では完了しており、実際に来週4/6から開講する初心者GAS講座は「V8版」でお送りしていきます。

2の「ブログ」については人気シリーズから順にリライトをしていて、現在70記事以上を完了しています。引き続き進めます。

これらについては、以下の記事でも詳しくお伝えしていますのでご覧ください。

GASの「V8ランタイム」アップデートを受けて私がやるべきことリスト
2020/2/5にGASのアップデートがあり「V8ランタイム」がサポートされました。過去残してきたブログの記事、書籍、講座用のスライドなど…本記事では、それら私がやるべきことリストをお伝えします。

ただ、悩ましいのが、3の「書籍」。

書籍の改版は、どうしてもすぐにはできない理由がありました。

改版作業とその工数

まず、GAS本の改版作業にはかなりの工数が必要であることが想定されています。

第2版とはいえ、今回の「V8」アップデートは、変数宣言やログ出力、文字列表記、関数リテラル、繰り返し、クラス定義など、言語の根本的なところがごっそり刷新されています。

ほぼすべてのソースコードは書き直しです。

また、GASやG Suiteのアップデートも2年半分あるので、UIなどもかなり変わっていて、画面キャプチャもほぼ撮り直しです。

あと、要望の多かった「フォーム」や、この2年半でG Suite Servicesの仲間入りをした「スライド」なども追加で入れるべき。

となると、まるまる一冊とは言わずとも、それとかなり近い作業量が想定されます。

ちなみに、現時点の構成案はこちらです。

01章 Google Apps Scriptの基礎知識
02章 スクリプトエディタ
03章 Apps Scriptダッシュボード(★追加)
04章 基本構文(★大幅変更)
05章 制御構文(★一部追加)
06章 関数(★大幅変更)
07章 オブジェクトの仕組み(★大幅変更)
08章 JavaScriptの組み込みオブジェクト(★一部追加)
09章 スプレッドシート
10章 Gmail(★一部追加)
11章ドライブ
12章 カレンダー
13章 ドキュメント
14章 スライド(★追加)
15章 フォーム(★追加)
16章 翻訳
17章 Baseサービス(★一部追加)
18章 イベントとトリガー(★一部追加)
19章 ユーザーインターフェース
20章 ファイルとデータの操作
21章 Utilitiesサービス(★一部追加)
22章 外部サイトへのアクセス
23章 プロパティサービス
24章 ライブラリ

全面的に変更や差し替えが入りますが、章全体を追加する「★追加」、章に一部を追加する「★一部追加」、章を大幅変更する「★大幅変更」としています。

少なくとも数ヶ月くらいの執筆作業が必要で、その後に校正作業、印刷・配本を経て書店に並びます。

すると、どうやっても半年以上の期間は必要になってしまいます。

他の執筆も進行中

個人的な事情もあります。

実は今、タカハシは別の書籍の執筆を抱えていて、初夏くらいまではGAS本の第2版の作業にそもそも着手できないのです。

ですから、初夏から作業開始して、そこから半年…うまくいって2020年内に出せれば…というスピード感です。

しかし、それまでの間、GASの門を叩くノンプログラマーに、古い情報の書籍しか提供できないというのは、たいへん心苦しいところがあります。

クラウンドファンディングが実現すること

そこでタカハシは考えました。

クラウンドファンディングで資金を集めようと。

そうすれば、GAS本の第2版の作業を前倒しで着手できると。

そのカラクリはこうです。

実は、執筆のお仕事についてなのですが、私の場合、稼働の100%を充てるということはしておらず、だいたい半分程度までしか充てていません。

残り半分は何をしているかというと、企業様からの依頼をお受けしたり、コミュニティの運営をしたり、別のお仕事をしています。

なぜかというと、執筆のお仕事の特性上、その長い年月の執筆期間中にはその対価は得られないからです。

それは、書籍が発売されてからようやく印税というカタチで受け取ることができます。

つまり、執筆のお仕事に稼働の100%を充てちゃうと日々の生活費が稼げなくなっちゃうのです。

逆に言えば、日々の生活費の分が確保できれば、残りの約半分も執筆に充てられます。

そこで、このクラウドファンディング企画です。

事前にいろいろなカタチで、書籍やいろいろな商品をご購入・ご支援をいただくことで、その確保をしようと考えたのです。

書籍はもちろん、講座やコミュニティ参加など、いろいろなリターンを用意していますので、ぜひ覗いてみていただければと思います。

まとめ

以上、クラウドファウンディング企画「最新の『Google Apps Script完全入門』をいち早く世に届けたい!」についてのお知らせでした。

私としては、早めに書籍が手に入ることのアドバンテージをどれだけ感じてもらえるか…チャレンジではあります。ドキドキです。

ですが、このプロジェクトがうまくいけば、きっとGASを使おうとしている皆さんの「『働く』の価値を上げる」ためにプラスになると思っています。

また、クラウドファンディングという、いつもとは異なるカタチで「GAS」が人々の目に触れるのも、GASの啓蒙という点で、貢献できるのではないかとも思います。

本プロジェクトの限定公開ページはこちらです。

最新の『Google Apps Script完全入門』をいち早く世に届けたい!
スプレッドシートやGmailなどを操作することができるプログラミング言語Google Apps Scriptは去る2月に大幅なアップデートがありました。それに伴い、唯一のバイブルともいえる「詳解!Google Apps Script完全入門」の第2版の早期出版を実現するのを目指すプロジェクトです。

気になる方は、ぜひ「お気に入り」をしておいていただければと思います。

どうぞよろしくお願いします!!

2020版『VBA vs GAS vs Python』どの言語を、どう学ぶべき?!

$
0
0

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

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

先日、月に一度の「定例会」が開催されました。

ご時勢的に、Zoomによるオンライン開催ということで、ノンプロ研初期にお話した内容を再度アップデートしてお送りしましたよ。

テーマは「2020版『VBA vs GAS vs Python』どの言語を、どう学ぶべき?!」です。

今回は、本定例会のレポートをお送りします。

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

【Zoom開催】ノンプロ研定例会Vol.30「2020版『VBA vs GAS vs Python』どの言語を、どう学ぶべき?!」
VBA・GAS・Python…ノンプログラマーはどの言語を学ぶべきか?そして、それぞれどう学ぶのが効果的なのか?それぞれの特徴と特性について紐解きながら、言語の選択とその勉強法について考えます。

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

ノンプログラマーはどの言語を学ぶべきか

結論、ノンプログラマーが学ぶべきプログラミング言語は、こちらです!

「仕事で活用できる言語」

プログラミングを身につけるには、数百時間の学習時間が必要なので、平日の夜や休日だけで、それを達成するのはたいへんなのです。

しかし、仕事で使える言語であれば、平日の昼間にプログラミングに携わる時間を捻出できる可能性が出てきますし、「自我関与」も強いので学習効果も高まります。

また、学習の結果、何らかの成果物が効果を上げてくれるなら、いつものルーチンにかかってた時間を短縮して、新たな時間を生み出す…その時間をさらにプログラミングに投資するという、循環を作ることも狙えます。

VBAを学ぶべき場合

Excelを中心としたOfficeアプリケーションをメインで活用している職場ならば、VBAを選ぶと良いです。

データ処理や書類作成などのルーチンはVBAで自動化できる部分は多いです。

WordやPowerPoint、Outlookも操作できます。

ノンプログラマー向けの書籍やWebサイトも豊富にありますので、ノンプログラマー向けに必要な知識は比較的集めやすいです。

Google Apps Scriptを学ぶべき場合

G Suiteメインの職場なら、Google Apps Scriptが良いですね。

スプレッドシートはもちろん、GmailやGoogleカレンダー、フォーム、ドキュメントなどよく使うアプリケーションを操作可能です。

また、GASはクラウド環境にあるので、HTTP通信を使ってSlackやChatworkなど他のAPIを提供しているサービスとの連携が得意です。

Pythonを学ぶべき場合

Webスクレイピングや、csvのデータ処理が多いならPythonがいいかもしれません。

Pythonはライブラリが豊富なので、苦手領域が少ないです。

いずれもVBAでできないことはないですが、Pythonのライブラリを使ったほうがスマートにできることが多いですし、ブラウザとしてInternet Explorerを使い続けるのは、今後少し心配があります。

GASはブラウザを操作することができませんので、スクレイピングできることが限られますし、csvやデータ処理も特化して得意というわけではありません。

他にも、Pythonでやったほうがベターな領域があるかもしれません。

ただ、幅広くできるからといって、何でもかんでもPythonでやればいいというわけではありません。

ノンプログラマー向け言語の2年の変化とこれから

さて、今回のプレゼンですが、2年前にも同じテーマでお送りしました。

ノンプログラマーはどのプログラミング言語を学ぶべきか #ノンプロ研
ノンプログラマーのプログラミング学習…どの言語を学ぶべきなのでしょうか?私がこれまで携わってきた、VBA・GAS・Pythonの3つの言語について、できることを比較してみましたので、一部レポートをしていきます。

プレゼンの準備をする中で、2年経って変わったことと、そうでないことがあることに気が付きました。

各言語の変わったことと、そうでないことについて言語別に見ていきましょう。

VBAで変わったこと

VBA自体は、この2年ではほとんど変わっていません。

大きなアップデート等はここしばらくありません。

ただ一方で、Excel本体の機能については、新たに関数が追加されたり、Power Queryなどの機能が注目されるようになったりという変化があります。

WordやPowerPointも機能追加がかなりされていますね。

VBAで対応していたいくつかのことが、これらの機能で実現できるようになったということはあると思います。

また、Power Appsが浸透していくことで、VBAが担ってきた業務アプリケーション的な立ち位置は、譲っていくことになるのかもしれません。

「進撃のMicrosoft」からノンプログラマーのこれからを考える
「ノンプログラマーのためのスキルアップ研究会」は、プログラミングなどのスキルを学び合うコミュニティです。先日の定例会は「進撃のMicrosoft」と題してPower Platformなど注目のサービスについて学びました!

とはいえ、Officeを中心として使う職場であれば、引き続き大きな武器であることは間違いありません。

Google Apps Scriptで変わったこと

それに対して、GASは、この2年で大きく変わりました。

GAS自体や、各サービスは細かにアップデートを繰り返されていますし、何より2020年2月には「V8ランタイムサポート」という、たいへん大きなアップデートもありました。

祝!Google Apps Scriptが「V8ランタイム」をサポート!モダンなECMAScript構文が使えるようになった
2020年2月6日、Google Apps Scriptが「V8ランタイム」をサポートしたという一報がありました。これにより、ECMAScript構文が使えるなど改善されましたのでその概要をお伝えします。

まだ少ないですが、求人情報にも「GAS」というワードが入るようになってきましたし、
書籍もいくつか出揃ってくる雰囲気もあります。

GASに関しては、この2年で、環境面も良くなってきていることを感じます。

IT企業を中心にクラウドを好む企業は、ビジネスサイドのプログラミング素養も評価する可能性が高まるはずですので、キャリア的にも展望はあると思います。

Pythonで変わったこと

Python自体はこの2年で色々なアップデートがあったわけですが、ノンプログラマーという視点でいうと、Pythonはようやくスタート地点という印象です。

Python自体の人気にも引っ張られるかたちで、ノンプログラマーを意識した書籍もいくつか出版されています。

ただ、一般的な企業であればPythonの存在を知らないマネージャーも多いですし、Pythonのインストール自体できない職場もあります。

実務できちんと活用できる事例を着実に重ねながら、将来的に大きく花開くことを比較的長い目で期待するというのが今持つべきスタンスと考えています。

まとめ

以上、「2020版『VBA vs GAS vs Python』どの言語を、どう学ぶべき?!」のレポートをお送りしました。

とにかく、実務で使えるということが第一です。

しかし、個人的には今回準備する中で、気づいた大きな反省点もありました。

この2年でノンプログラマーの市場価値をあまり上げられていないな、と。

もちろん簡単なことではないのですが、再度気を引き締め直して、頑張らねばと思います。

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

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

【GAS】Gmailのメッセージから返信先とパーマリンクを取得する方法

$
0
0
mail

photo credit: Phil’s 1stPix We Deliver For You- Down on the Farm via photopin (license)

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

Gmailで届いた問い合わせフォームからのメールを収集するツールを作成しています。

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

【GAS】Gmailからメールを検索してスプレッドシートに書き出す方法
Gmailに届いたWordPressサイトからの問い合わせメールの分析を進めています。 今回はGoogle Apps ScriptでGmailから検索して取り出したメールたちをスプレッドシートに出力します。

Gmailのメッセージの内容をスプレッドシートに書き出す方法をお伝えしました。

今回は、この書き出しについてよりブラッシュアップしていきます。

Gmailのメッセージから返信先とパーマリンクを取得する方法です。

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

前回のおさらい

前回作成したスクリプトはこちらです。

function searchContactMail() {
 
  const query = '"このメールは 株式会社プランノーツ http://plannauts.co.jp のお問い合わせフォームから送信されました"';
  const start = 0;
  const max = 10;
 
  const threads = GmailApp.search(query, start, max);
  const messagesForThreads = GmailApp.getMessagesForThreads(threads);
 
  const values = [];
  for(const messages of messagesForThreads){
    const message = messages[0];
    const record = [
      message.getDate(),
      message.getFrom(),
      message.getSubject(),
      message.getPlainBody().slice(0,200)
    ];
    values.push(record);
  }
 
  if(values.length > 0){
    SpreadsheetApp.getActiveSheet().getRange(2, 1, values.length, values[0].length).setValues(values);
  }
 
}

実行すると、以下のようにスプレッドシートに最新10件の問い合わせメールについて書き出しを行います。

Gmailからのメールをスプレッドシートに出力した結果

しかし、このシートはぼかしているので分かりづらいですが、B列の「from」つまり送信元のアドレスが「Wordpress管理者のアドレス」になってしまっているという問題を見つけました。

また、各メッセージの本文を200文字でスライスしているので、全文がすぐには見られないという問題もあります。

今回は、この2点を解決していきます。

getReplyToでメールの返信先を取得する

まず、送信元が管理者のアドレスになってしまっている件を解決していきます。

問い合わせフォームを作成しているWordPressプラグインContact Form 7のメールの設定を確認すると、以下のようになっていました。

Contact Form 7のメール設定

つまり、送信元アドレスとして、管理者のアドレスが使われるように設定されているのです。

だから、getFromメソッドがすべて管理者のアドレスになってしまうわけです。

代替案として、「追加ヘッダー」に設定されている返信先つまり「Reply-To」を使用することができます。

メールの返信先を取得する際はgetReplyToメソッドで以下のように記述します。

Messageオブジェクト.getReplyTo()

getPermalinkでスレッドのパーマリンクを取得する

続いて、本文を全部読めないという問題について見ていきます。

そのスレッドへのリンクを用意して、そのリンク先で全文を読めるようにしましょう。

スレッドのパーマリンクを取得するにはgetPermalinkメソッドを使います。

Threadオブジェクト.getPermalink()

パーマリンクはスレッド単位での取得になりますので、対象のオブジェクトがThreadオブジェクトになるので注意です。

ですから、メッセージからそれを含むスレッドを取得する必要がありますね。

以下の、getThreadメソッドを使います。

Messageオブジェクト.getThread()

Gmailからメールを取得してスプレッドシートに書き出すスクリプト

以上をまとめると、こちらのスクリプトになります。

function searchContactMail() {
 
  const query = '"このメールは 株式会社プランノーツ http://plannauts.co.jp のお問い合わせフォームから送信されました"';
  const start = 0;
  const max = 10;
 
  const threads = GmailApp.search(query, start, max);
  const messagesForThreads = GmailApp.getMessagesForThreads(threads);
 
  const values = [];
  for(const messages of messagesForThreads){
    const message = messages[0];
    const record = [
      message.getDate(),
      message.getReplyTo(),
      message.getSubject(),
      message.getPlainBody().slice(0,200),
      message.getThread().getPermalink()
    ];
    values.push(record);
  }
 
  if(values.length > 0){
    SpreadsheetApp.getActiveSheet().getRange(2, 1, values.length, values[0].length).setValues(values);
  }
 
}

15行目をgetReplyToメソッドに変更、18行目にパーマリンクの取得を追加しています。

実行結果

実行結果はこちらです。

返信用アドレスへの変更と、パーマリンクの追加を確認してください。

Gmailからのメールをスプレッドシートに出力した結果

また、パーマリンクをクリックすると以下のようにスレッドについて全文を確認できるページに遷移します。

スレッドのパーマリンクをクリックしたページ

まとめ

以上、Gmailのメッセージから返信先とパーマリンクを取得する方法をお伝えしました。

2回にわたって、メッセージの日時、送信元、件名、本文、返信先を、そしてスレッドのパーマリンクを取得するメソッドを紹介しましたが、他にもありますので、用途に応じて調べてみて下さいね。

Class GmailApp | Apps Script | Google Developers

次回は、新たな問い合わせメッセージをスプレッドシートに追加していけるようにしていきます。

【GAS】新たな問い合わせメールをGmailで取得しスプレッドシートに随時追加する
Gmailの未読メールを取得する方法、メールを既読にする方法などを活用して、Google Apps Scriptで問い合わせメールを都度スプレッドシートに追加していく方法についてお伝えします。

どうぞお楽しみに!

連載目次:GASでGmailに届いた問い合わせメールを分析する

お仕事の現場では日々様々なメールが届きます。その中で重要なのが「問い合わせメール」ですね。このシリーズでは、Webサイトからの問い合わせメールを自動でスプレッドシートに取り込んだり、チャットワークに送る方法についてお伝えしていきます。

  1. 【GAS】Gmailに送られた過去のメールから特定条件のメールを検索して取得する
  2. 【GAS】Gmailからメールを検索してスプレッドシートに書き出す方法
  3. 【GAS】Gmailのメッセージから返信先とパーマリンクを取得する方法
  4. 【GAS】新たな問い合わせメールをGmailで取得しスプレッドシートに随時追加する
  5. 【GAS】Gmailに来た問い合わせをチャットワークに通知してかつタスク追加する
  6. Google Apps ScriptにおけるGmailの読み取り件数の制限とその対処法
  7. 【GAS】Gmailの特定条件で検索したスレッドの全メールを取得してスプレッドシートに書き出す
  8. 【GAS】GmailのメッセージIDを利用して新規メールのみをスプレッドシートに追加する
Viewing all 2073 articles
Browse latest View live


<script src="https://jsc.adskeeper.com/r/s/rssing.com.1596347.js" async> </script>