メニュー
\ 最大15%ポイントアップ! /

【ExtendScript】スクリプト情報を取得してスプレットシートに書き込む方法

eyecatch_ extendscript

スクリプト使用時にスクリプト名と使用者と使用時間をスプレットシートに記載する仕組みを作成してみました。

ただしソケット通信など使わず、バッチを使った力技なのであしからず。

目次

データベースをスプレットシートで作成

スクリプト名と使用者と使用時間の3つの項目を記載しておきます。

GASの記述

ツール>スクリプトエディタからGASを開き下記のコードを記述します(※スプレットシートID)

コピペ後、公開>ウェブアプリケーションとして導入の認証をして発行されたURLを控えます。

引用

https://qiita.com/hirohiro77/items/a947416f803f45777338

doGet通知で値を取得する方法

発行されたURLの最後にパラメータをつけてやると、値を渡すことができます!

たとえば

“https://script.google.com/macros/s/発行されたID/exec?p1=スクリプト名.jsx&p2=使用者名&p3=使用日時”

をexec?のあとに記述してURLを開くと3つのパラメータが渡せます!

ESTKからバッチを経由してスクリプトに値を渡す方法

ということでExtendスクリプトから、なんとかパラメータをつけたURLへアクセスして値を渡せば、スプレットシートに記録が取れるはずです!!

はじめはソケット通信でアクセスできないか、がんばってみたのですがうまくいかないので、バッチ(bat+vbs)とcurlを使ってアクセスするようにしてみました

投稿が見つかりません。

curlの導入

下記のURLからダウンロード。
https://curl.haxx.se/windows/

解凍して、下記のパスに格納しました。

C:\Program Files (x86)\curl-7.65.3-win64-mingw
あわせて読みたい
【Google Apps Script】POST通信からスプレッドシートに書き込む方法 GASを使って、簡単なGET/POST通信をやってみました。 【データベースの作成】 こんな感じで、スプレッドシートにデータベースを作成しました。 【GASでGET/POST通信する...

スクリプト計測するExtendScript

  1. スクリプト名と使用者名と使用日時を取得して、発行されたURLの後ろに付けます

  2. ExtendScriptでCurlコマンドを使用してURLへアクセスするバッチを作成します。

  3. コマンドプロンプトを表示させたくないので、VBS経由で作成したバッチを実行します。

  • JSX

  • VBS

以上、実行するとスクリプト名と使用者名と使用日時が即座にスプレットシートに記載されます。

実際にスクリプトにつけて計測する

下記のようなイメージです。

  • JSX(実際に使用するスクリプト)

  • JSX(参照先)

最終的に、下記のような感じで記録されました!

残っている問題点

  • スクリプト名を日本語の場合、urlエンコードかけているのにも関わらずスクリプト名がちゃんと反映されない!

▶コピペでアクセスする分にはうまくいくのでバッチ処理が原因と思われる。(ちゃんと反映されればデコードして日本語名に戻せる)

▶解決しました。

バッチ処理でも「%」は「%%」と記述することでエスケープできるようです。

var webhookUrl = webhookUrl.replace( /%/g , "%%" ) ;   

事前にURLを置換することで、日本語名のスクリプト名も記述できるようになりました!

[追記]BridgeTalkで通信する場合

Bridgeの起動が必要ですが、下記のスクリプトを使用することでBridgeTalkだけで簡単に通信ができました!

Bridgeの環境設定をしておくとバックグラウンドで実行できるようになります。

ただしCurlを使うより通信に時間がかかります。

おまけ:ソケット通信でWEBからデータをダウンロードするスクリプト

スクリプトからWEBにあるデータをダウンロードしてみました。
ソフトのことはわかるもののソケット通信に関する知識は0でネットに転がっているコードを片っ端から試して勉強してみています。
下記のはちゃんと認証してhttpsでもちゃんと取得できるので、ここからとっかかりになりそうです。

http://chocolife.blog80.fc2.com/blog-entry-79.html

WEBからデータをダウンロードするスクリプト


  

スクリプト情報を取得してスプレットシートに書き込む方法まとめ

ただ単にURLにアクセスするだけなのに、ソケット通信ができなくて

JSX▶BAT▶VBS▶CURLと渡って、ものすごく残念な形なのですが

とりあえず力技でスクリプト名と使用者名と使用日時を取得して、スプレットシートに書いてみました。

ソケット通信がうまくできたら、JSXだけで完結するので改良を目指します!

  • URLをコピーしました!
  • URLをコピーしました!

Adobe ExtendScript Toolkitに関する参考記事・ツール・書籍のまとめ

Adobe ExtendScript Toolkitに関する記事を下記にまとめました。

ExtendScript Toolkitのオンライン学習

ExtendScript Toolkitのオンライン学習学習はコスパよく学習できるのでおすすめです。

Adobe ExtendScript Toolkitの参考書籍

Adobeソフト全般のソフトウェア購入

ExtendScript Toolkitを使うために、Adobe Creative Cloudを安く導入しましょう。

この記事を書いた人

すいみんのアバター すいみん CGデザイナー・テクニカルアーティスト

技術的なことが好きなフリーランスのデザイナー。
ブログが好きで月間20万PVの技術ブログを運営。
書籍のお仕事もしています。
・「Unity デザイナーズ・バイブル」
・「Unityゲーム プログラミング・バイブル 2nd Generation」
ご依頼はこちらから!

この記事も読まれてます

目次