Google Apps Script で社内システムを作ってみた (2)
- 2016.03.23
- プログラミング Google Apps Script
- demo
さて、前回(「Google Apps Script」で社内システムをつくってみた~GASとの出会い編~)はHTMLファイルの作成方法についてお話させていただきましたが、今回はいよいよスクリプトを使って、入力フォームと新規スプレッドシートの繋げ方について触れてみようと思います。 関連記事: 変数のスコ …
さて、前回(「Google Apps Script」で社内システムをつくってみた~GASとの出会い編~)はHTMLファイルの作成方法についてお話させていただきましたが、今回はいよいよスクリプトを使って、入力フォームと新規スプレッドシートの繋げ方について触れてみようと思います。 関連記事: 変数のスコ …
Googleが提供する「Gmail」や「スプレッドシート」、「カレンダー」、「ドキュメント」などの各種アプリをJavaScriptで操作し、お互いを繋げたり組み合わせたり、動かしたり出来るサービス「Google Apps Script」をご存知でしょうか? かく言う私もつい最近まで知らなかったのです …
GreasemonkeyはFirefoxの拡張機能のひとつで、ブラウザ側に設定されたJavaScriptコード(ユーザースクリプト)でWebページに変更を加えることができる。この機能は、シンメトリック製品・GeneCodeに幾分か似ている面がある。ユーザースクリプト開発とサーバーサイドJavaScr …
JavaScriptはブロックスコープやモジュールスコープを持たない。変数は大域変数か関数内局所変数のどちらかだ。これは不便なことだ。が、関数スコープを、ブロックスコープやモジュールスコープの代用とすることが広く行われていて、まー何とかなっているのである。今日はこの事情を説明しよう。 関連記事: T …
JSONデータの各部にアクセスするために、ごく簡単なJavaScript関数を書いてみた。この小さなプログラムは、ツリー構造のパス式の一種を実装していると考えられる。一般的なパス式(path expression)の説明をしてから、今回定義したJSON向けの簡単なパス式を紹介しよう。 関連記事: 変 …
前回はTomcatにおけるクラスローダの全体像を書いた。今回はクラスの参照可否性について説明したい。クラスの参照可否性とはクラスローダがクラスを読み込むことができるかどうかの条件で、少々複雑な内容になる。 前回説明したクラスローダの階層と今回説明する参照可否条件まで知っておけば、クラスローダに起因す …
前回の記事ではJavaクラスローダに関する現象を書いた。普段はあまり意識することの少ないクラスローダだけど、前回のような現象が現実に起きていることを考えると、クラスローダに対する多少の知識はあったほうが絶対に役立つ。 今回はクラスローダの様々な機能・特徴のうち、Webアプリケーションプログラマでも是 …
JavaベースのWebアプリケーション実行環境Tomcatをターゲットとしたアプリケーションを開発していたときのこと。一部のロジックをmainメソッドから実行できるように変更した。そして、いざ実行してみるとこれまで読み込めていたプロパティファイルが読めなくなってしまった! なぜこんなことになってしま …
C言語を勉強してきた中で私の致命的な思い違いシリーズの第三弾です。 今回は、練習で「標準入力からテキストを読み込んで行数をカウントする」という簡単なプログラムを作成した時のことです。標準入力で受けた内容を1バイトづつ読み込み、読み込んだ値が改行コードの場合はカウントアップして行数をカウントする内容の …
C言語を勉強してきた中で私の致命的な思い違いシリーズの第二弾です。 第一弾「C言語では signed と unsigned の違いで挙動がこんなにも変わる!」 第三弾「C言語でEOFをchar型で比較してまずいのはなぜ?」 今回は、暗黙の型変換と符号拡張についてです。 関連記事:コンパイラの最適化と …
通常の業務とは別にC言語を少しずつ勉強しています。C言語の鬼門と言われるポインタの動きもある程度理解し、構造体、線形リストやハッシュなどを使った簡単なプログラムを書けるようになりました。しかし、C言語としてかなり初歩的なことにも関わらず、今まであんまり意識せずにいたために致命的な思い違いをしたままだ …
以前C言語で、業務とはまったく関係のないお遊びプログラムを作っている時に、不可解な現象に悩まされました。 とある関数の内部で、呼び出し元の情報を書き換えて、関数を抜け出す時に本来の戻り先とは別の戻り先に制御を移すという、ちょっと変な処理を行うものです。 この時は何か目的があってプログラミングをしてい …
サーバーアプリケーションでは、特定のファイルに対し、読み書きが同時に発生することがある。同時書き込みを防止するためには書き込みロックを利用したり、書き込み中の読み込みを防止するためには読み込みロックを利用したりする。 しかし、一般的にロックを使用するとロックの取得待ちが発生することになり、環境によっ …
OutOfMemoryError回避のためのJavaコーディング – 前編と後編でOutOfMemoryErrorの典型的な発生パターンを3つ紹介した。 (A)サイズオーバー型 巨大な領域確保によって一気にヒープの最大サイズをオーバー (B)メモリリーク型 開放されないオブジェクトが溜ま …
前回(OutOfMemoryError回避のためのJavaコーディング – 前編)に引き続き、OutOfMemoryErrorの話題。前回は、OutOfMemoryErrorを3パターンに分けた。 (A)サイズオーバー型 巨大な領域確保によって一気にヒープの最大サイズをオーバー (B)メ …
Javaアプリケーションサーバーを使っていると、OutOfMemoryErrorに遭遇することが時々ある。最近はサーバーの物理メモリサイズが2GBを超えることもあるのに、やっぱりこのエラーは発生する。 OutOfMemoryErrorは文字通り、メモリが足りないという意味だ。だけど、当然ながら物理メ …
どんなプログラム言語でもそうなのですが、マルチスレッド下でプログラムを組むときは、シングルスレッドとは違うところに色々気を使わないといけません。 今回は、Javaマルチスレッドプログラムでは基本的なことですが(自分だけかもしれませんが)よく忘れて、不可解な動作に首を傾げてしまうポイントについて説明し …
弊社製品ラウンドアバウトが先日正式リリースされた。僕はラウンドアバウトの開発メンバーだったから、やっと完成したという大きな達成感がある。 しかし、その開発期間を思い起こしてみると、C言語特有の問題に直面し、実に苦労すること多かった。ラウンドアバウトはApacheモジュールなので開発言語はC言語となる …
今回は以前JavaでWebアプリケーションを開発した際に遭遇したJavaMailに関しての対応策とその原因の調査結果を書きます。 対策は簡単だったのですが、原因は調査するにつれ込み入った話であることが分かりました。 Javaの関連記事: OutOfMemoryError回避のためのJavaコーディン …
前回は、DateFormatクラスがマルチスレッド問題によってバグを引き起こす例を紹介した。マルチスレッドによる問題に対処するには、スレッドごとにインスタンスを作成するか、synchronizedブロックによる同期化を行う。でも「正しい同期化」を行うには十分な知識とコードの把握が不可欠・・・。 そん …