GrapeCity.devlog

グレープシティ株式会社のDeveloper Tools〈開発支援ツール〉の、製品のTIPSや発売などに関する最新情報をお届けします。

InputManJSセル クイックスタート with npm

2019年1月30日にリリースされたSpreadJS V12Jでは、収録ライブラリのSpread.Sheetsに新機能「InputManJSセル」が搭載されました。この機能を利用すると、スプレッドシート上でのセル入力時にInputManJSを利用した高度な入力機能を提供できるようになります*

今回はJavaScriptライブラリをダウンロードして使用できる「npm」の仕組みを利用しながら、この新機能の使用例をご紹介したいと思います。なお、「npm」の概要はこちらの記事でも解説していますので、ぜひ併せてご参照ください。

それでは早速、npmを使用したプロジェクトの作成から始めていきましょう!

プロジェクトの作成

1. プロジェクトフォルダの作成

はじめにプロジェクトを作成します。今回は「sample」という名前のプロジェクト用のフォルダを用意し、その中でアプリケーション構築を行なっていきます。

Windowsをお使いの方はコマンドプロンプト、Macの場合はターミナルを使用して任意のディレクトリ上へ移動し、以下のコマンドを実行して「sample」フォルダの作成と同フォルダへの移動を行います。

mkdir sample
cd sample
2. プロジェクトの初期化

次に行うのはプロジェクトの初期化です。npm initコマンドを実行してnpmパッケージの定義ファイル(package.json)を作成します。この際、コマンド実行後にプロジェクト名やバージョンなどを入力する必要がありますが、以下のように-yオプションを指定することによって、それらの設定を一括で「既定」に設定することが可能です。

npm init -y
3. 各種パッケージの準備

初期化が終わったら開発に必要なパッケージをインストールしていきます。今回利用するパッケージは以下の5つです。

パッケージ概要
webpackモジュールバンドラー
webpack-cliwebpackのCLI
html-webpack-pluginHTMLファイルを生成するプラグイン
style-loaderstyleタグにCSSコードを出力するローダー
css-loaderCSSファイルをインポートするローダー

以下のコマンドを実行することにより、上記5つを一括でインストールできます。

npm install --save-dev webpack webpack-cli html-webpack-plugin style-loader css-loader
4. webpackと関連パッケージの設定

先ほどインストールしたパッケージのうち、html-webpack-plugin、css-loader、style-loaderはwebpackと一緒に使用するプラグインやローダーです。webpackの設定ファイル(webpack.config.js)を作成し下記のコードを記述して、それぞれがwebpack上で機能するように設定します。

const HtmlWebpackPlugin = require('html-webpack-plugin');
module.exports = {
  module: {
    rules: [
      {
        test: /\.css$/,
        use: [ 'style-loader', 'css-loader' ]
      },
    ]
  },
  plugins: [
    new HtmlWebpackPlugin({template: './src/index.html'})
  ]
};

上記に加え、build時にwebpackが実行されるよう、npmパッケージの定義ファイル(package.json)に下記のコードを追加します。

"scripts": {
  "build": "webpack"
},
5. HTMLとJSファイルの作成

仕上げにウェブサイトの本体となるhtmlファイルとjsファイルを作成します。はじめに以下のコマンドでこれらのファイルを配置する「src」ディレクトリを作成します。

mkdir src

次にこのディレクトリ内に下記二つのファイルを作成します。

  • index.html
  • index.js

このうち、index.jsに記載をする必要はありません(後ほど処理を記述します)。もう一つのファイル、index.htmlには以下の内容を追記してください。

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>InputManJSセル クイックスタート with npm</title>
</head>

<body>
</body>
</html>

これで、プロジェクトの雛形が完成しました。

GrapeCity JSライブラリパッケージのインストール

この項目ではInputManJSセルの利用に必要なGrapeCityのJSライブラリパッケージをインストールしていきます。今回利用するのは以下4つのパッケージです。

パッケージ概要
@grapecity/spread-sheetsSpread.Sheetsライブラリ
@grapecity/spread-sheets-resources-jaSpread.SheetsのJPリソース
@grapecity/inputman InputManJSライブラリ
@grapecity/spread-sheets-inputmancelltype InputManJSセルモジュール

先ほど作成したプロジェクトフォルダで以下のコマンドを実行することにより、上記4つを一括でインストールできます。

npm install @grapecity/spread-sheets@12.0.7 @grapecity/spread-sheets-resources-ja@12.0.7 @grapecity/inputman @grapecity/spread-sheets-inputmancelltype

ここまでの設定とパッケージインストールで、InputManJSセルを使用する準備が全て整いました。

次の項目では実際に同機能を経由してInputManJSの日付時刻コントロールを使い、セルの入力時にカレンダーを表示させてみたいと思います。

InputManJSセルを使う

前項で用意したHTMLファイルとJSファイルに処理を記述して、画面に配置したスプレッドシート上のセル入力で、InputManJSの日付時刻コントロールが表示されるようにします。

index.htmlとindex.jsにそれぞれ、以下のコードを追記します。各設定の詳細については、コード中のコメントおよびSpread.Sheetsライブラリの製品ヘルプをご参照ください。

index.html

Spread.Sheetsコントロールをホストするためのdiv要素を追加します。

<div id="ss" style="height:200px;"></div>
index.js

各パッケージのモジュール、日本語リソース、スタイルのインポートとSpread.Sheetsコントロールの生成を行い、InutManJSセルの設定を記述します。

// Spread.Sheets関連モジュールのインポート
import * as GCSS from '@grapecity/spread-sheets';
import '@grapecity/spread-sheets-resources-ja';
import '@grapecity/spread-sheets/styles/gc.spread.sheets.css';

// InputManJS関連モジュールのインポート
import '@grapecity/inputman/CSS/gc.inputman-js.css';

// InputManJSセルモジュールのインポート
import * as GCIMCellType from '@grapecity/spread-sheets-inputmancelltype';

// 日本語カルチャ設定
GCSS.Spread.Common.CultureManager.culture("ja-jp");
// Spread.Sheetsコントロールの生成
var spread = new GCSS.Spread.Sheets.Workbook(document.getElementById('ss'));
var sheet = spread.getSheet(0);
sheet.setColumnWidth(0, 200);
// InputManJSセル(日付時刻型)の生成
var gcDateTimeCellType = new GCIMCellType.GcDateTimeCellType({
  // 入力書式の設定
  formatPattern: 'yyyy/MM/dd HH:mm:ss',
  // ドロップダウンボタンの表示設定
  showDropDownButton: true
});
// A1セルに対するInputManJSセル設定
sheet.setCellType(0, 0, gcDateTimeCellType);
実行

以下のコマンドを実行して、プロジェクトをビルドします。

npm run build

ビルドによってプロジェジェクトフォルダ内のdistディレクトリに生成されたindex.htmlファイルを開くと、アプリケーションが実行されます。

実行サンプル

まとめ

いかがだったでしょうか。このように、InputManJSセルを使用することで、スプレッドシートに高度な入力機能を付与して、エンドユーザーのデータ編集を補助したり、入力ミスを防止したりすることが可能になります。今回ご紹介した日付時刻型以外にも、同機能ではInputManJSのマスク型コントロールや数値型コントロールの機能を利用することができます。

弊社ウェブサイトで公開中のオンラインデモでは、このInputManJSセルをはじめとする様々な機能をお試しいただけるようになっていますので、気になった方は是非チェックしてみてください。

また、今回ご紹介したInputManJSセル機能搭載のSpreadJS V12Jのリリースを記念して、現在InputManJSが70%オフでご購入いただけるキャンペーンを実施中です。この機会をお見逃しなく!詳細については以下のキャンペーン情報ページをご覧ください。

* InputManJSセル機能のご利用にはInputManJSのライセンスが必要です。

  • グレープシティ株式会社のDeveloper Tools〈開発支援ツール〉ではエンジニア経験者を幅広く募集しています。
  • グレープシティ株式会社のDeveloper Tools〈開発支援ツール〉の製品のデモアプリケーションをお試しください。