IT全般に関連する記事を投稿しようと思います。
運送事業者向け「コンプラ対策を実施して運収をアップする方法」

運送事業者向け「コンプラ対策を実施して運収をアップする方法」のWEB相談会を実施する事になりました。
久々の企画でドキドキしておりますが、今回は中国地方を中心に車両台数10台から50台規模の運送会社さまにDMも送付させて頂きました。
この企画を実施するにあたりこの「労務対策・コンプラ対策」について多くの運送会社様にお話しを伺う事ができました。本当に運行管理者の方・経営者の方のご苦労がわかりました。労基署の指導方針もわからなくはないですが、小規模の運送会社にとってはとてもハードルの高い深刻な問題だと思いました。
残業手当をキッチリ運転者さんに支払し、荷主様の物流コストの削減要求にもしっかりと対応し、尚且つ燃料代が高騰すれば、走れば走る程、赤字になってしまいますよね。
そこで、今回弊社の開発していたクラウド上の運行管理システム・運転者管理システムに社労士さんのアドバイスをもらいながら理想的な方法論を構築いたしました。
しかし、全ての運送会社さんが同じ悩みを持っているわけではありません。会社事に事情が異なってまいります。そこで、今回はインターネットを利用して個別の相談会を実施いたします。
ひとりひとりと、電話とWEBブラウザで画像を共有しながら相談とアドバイスをさせて頂きます。
ですから、人数の制限をさせていただきました
。今回は20名様限定で実施いたします。
期間は10月末までのお申込みとさせていただきますので、お早めに申込みください。
相談会の内容はここから、見る事ができます。
初めてのビデオ撮影でカチタチのカミカミで恥ずかしいのですが、ご覧になってください。
ご興味のあるかたは、こちらから内容の確認及び申込みが行えますので、是非、ご覧ください。
http://www.oo-com.com/lp2/
iPadで経費登録
前回と同様Googleドキュメントのシリーズです。
Googleドキュメントを利用して、出張先などから経費の登録を行えるようにしてみました。
EXCELで作成した経費登録伝票をGoogleドキュメントにアップロードするとスプレッドのプレビューではレイアウトが崩れてしまいます。これをまずは印刷しても問題ないように整えます。
運用的には、前回と同様にsafari経由で直接登録を行います。(Office2HDではレイアウトが崩れます。)
ただ、iPad上からはセルの範囲を選んでクリアーなどの処理ができないのでスクリプトを作成しました。
まず、ドキュメントを開くとこのように「モバイル版」の表示になります。
「スプレッドシート表示に切替え」を選択します。
「PC版の使用を続ける」を選択します。
本来はスクリプトの自動起動でメニューが表示されるはずなのですが、モバイル版が最初に表示される影響で自動起動ができないようです。
仕方ないので下の方にメニューを表示するボタンを作成しました。
ボタンを押すとした図のようにマイメニューが表示されます。
マイメニューを押すと

行のセルをどこか選択して、メニューの「行クリア」を押すとその行がクリアされます。

同様に「全クリア」も用意しました。
事務所に帰ってドキュメントからそのまま印刷してもレイアウトがズレる事はありません。
私の場合は、この表を「形式を指定してダウンロード」でExcel形式にして保存します。そして別のExcelのアドインで財務のCSV形式に変換しています。元々EXCELで行ってましたので、手抜きをしてその様にしていますが、時間があれば、直接財務用CSVに変換するスクリプトを組込んでみたいと思います。
以下スクリプトの内容です。
// メニューの定義
function onOpen() {
var ss = SpreadsheetApp.getActiveSpreadsheet();
var menuEntries = [
{name: "行クリア", functionName: "fncGyoClr"},
{name: "全クリア", functionName: "fncAllClr"}
];
ss.addMenu("マイメニュー", menuEntries);
}
// 1行クリア
function fncGyoClr() {
var sheet = SpreadsheetApp.getActiveSheet();
var range = SpreadsheetApp.getActiveRange();
// var cols = range.getColumn(); //未使用
var rows = range.getRow();
if (rows < 11){
Browser.msgBox("エラー!:行の指定が不正です!");
} else if (rows > 32){
Browser.msgBox("エラー!:行の位置が大きすぎます!");
} else {
sheet.getRange(rows,1,1,11).clearContent(); // 範囲のクリア
sheet.getRange(rows,13,1,1).clearContent(); // 範囲のクリア
}
}
// 全クリア
function fncAllClr() {
var sheet = SpreadsheetApp.getActiveSheet();
var range = SpreadsheetApp.getActiveRange();
for(var i = 11;i <= 32;i++){
sheet.getRange(11,1,22,11).clearContent(); // 範囲のクリア
sheet.getRange(11,13,22,1).clearContent(); // 範囲のクリア
}
}
iPhoneからの投稿
Googleドキュメントを利用して、出張先などから経費の登録を行えるようにしてみました。
EXCELで作成した経費登録伝票をGoogleドキュメントにアップロードするとスプレッドのプレビューではレイアウトが崩れてしまいます。これをまずは印刷しても問題ないように整えます。
運用的には、前回と同様にsafari経由で直接登録を行います。(Office2HDではレイアウトが崩れます。)
ただ、iPad上からはセルの範囲を選んでクリアーなどの処理ができないのでスクリプトを作成しました。
まず、ドキュメントを開くとこのように「モバイル版」の表示になります。
「スプレッドシート表示に切替え」を選択します。
「PC版の使用を続ける」を選択します。
本来はスクリプトの自動起動でメニューが表示されるはずなのですが、モバイル版が最初に表示される影響で自動起動ができないようです。
仕方ないので下の方にメニューを表示するボタンを作成しました。
ボタンを押すとした図のようにマイメニューが表示されます。
マイメニューを押すと

行のセルをどこか選択して、メニューの「行クリア」を押すとその行がクリアされます。

同様に「全クリア」も用意しました。
事務所に帰ってドキュメントからそのまま印刷してもレイアウトがズレる事はありません。
私の場合は、この表を「形式を指定してダウンロード」でExcel形式にして保存します。そして別のExcelのアドインで財務のCSV形式に変換しています。元々EXCELで行ってましたので、手抜きをしてその様にしていますが、時間があれば、直接財務用CSVに変換するスクリプトを組込んでみたいと思います。
以下スクリプトの内容です。
// メニューの定義
function onOpen() {
var ss = SpreadsheetApp.getActiveSpreadsheet();
var menuEntries = [
{name: "行クリア", functionName: "fncGyoClr"},
{name: "全クリア", functionName: "fncAllClr"}
];
ss.addMenu("マイメニュー", menuEntries);
}
// 1行クリア
function fncGyoClr() {
var sheet = SpreadsheetApp.getActiveSheet();
var range = SpreadsheetApp.getActiveRange();
// var cols = range.getColumn(); //未使用
var rows = range.getRow();
if (rows < 11){
Browser.msgBox("エラー!:行の指定が不正です!");
} else if (rows > 32){
Browser.msgBox("エラー!:行の位置が大きすぎます!");
} else {
sheet.getRange(rows,1,1,11).clearContent(); // 範囲のクリア
sheet.getRange(rows,13,1,1).clearContent(); // 範囲のクリア
}
}
// 全クリア
function fncAllClr() {
var sheet = SpreadsheetApp.getActiveSheet();
var range = SpreadsheetApp.getActiveRange();
for(var i = 11;i <= 32;i++){
sheet.getRange(11,1,22,11).clearContent(); // 範囲のクリア
sheet.getRange(11,13,22,1).clearContent(); // 範囲のクリア
}
}
iPhoneからの投稿
iPadを利用したスプレッドシートの活用2(スクリプト編)
昨日の続きになりますが、今日はスクリプトの具体的な記述になりますので、
興味の無い方はパスしてくださっても構いませんが最後の文章のみご確認ください。
ちなみに、この文章はFaceBookにも転送されていますが、FaceBookでは図が表示されておりませんので
タイトルのリンクをクリックしてブログから閲覧願えれば幸いです。
<2011-07-16 スクリプトを全面更新しました。>
実際のタイムカードの画面には、下記図の様に、A・B列に担当者コードと名前を隠しております。表示しております。

セル"D7"の式には、"=vlookup(D5,A2:B30,2,false)"を埋め込み、名前を表示させるようにしておきます。
セル"E1"の式には "=day(D1)"
セル"F1"の式には "=hour(D1)& ":" & minute(D1)"
セル"E7"の式には "=year(D1)"
セル"F7"の式には "=month(D1)"
をそれぞれ埋め込みます。これは、スクリプトで利用しやすいようにする為に記述しています。
スクリプトは[ツール][スクリプトエディタ]で作成します。
スクリプトは以下の様になります。
// *********************************************
// * クラウドタイムカード Ver1.1 *
// *********************************************
// Author : OO-com.inc T.Oka
// 履歴
// 2011.07.13 Ver1.0 デリバリー
// 2011.07.16 Ver1.1 運用開始、複数の人が同時に処理できるように排他処理を行った。
// 出勤時、社員名の背景色を水色に退勤時はグレーにする。
// その他の対応細かい対応
//
//
// ******************************************************************************
//出勤ボタンを押したとき出勤の背景色を赤くする
function myBackColor() {
var ss = SpreadsheetApp.getActiveSpreadsheet();
var sted = "ST"
var Sno = fncGetSheetNo("入力")
var sheet = ss.getSheets()[Sno];
var Tan = sheet.getRange("D5").getValue(); //Ver1.1 他の人が使用中かどうかチェックする
if (Tan != ""){
Browser.msgBox("他の人が使用中です! しばらくお待ちください。");
return;
}
var cell= sheet.getRange("E8");
cell.setBackgroundColor("RED"); //"E8"の背景色を赤に
cell= sheet.getRange("F8");
cell.setBackgroundColor("White"); //"E9"の背景色を白に
cell= sheet.getRange("E4");
cell.setValue(sted); // "E4"に"ST"をセットし出勤状態をKeep
var value = Browser.inputBox("社員コードを入力してください:");
if (value != "cancel"){ //Ver1.1 キャンセルの対応を行った。
sheet.getRange("D5").setValue(value);
}
}
// ******************************************************************************
//退勤ボタンを押したとき退勤の背景色を赤くする
function myBackColor2() {
var ss = SpreadsheetApp.getActiveSpreadsheet();
var sted = "ED"
var Sno = fncGetSheetNo("入力")
var sheet = ss.getSheets()[Sno];
var Tan = sheet.getRange("D5").getValue(); //Ver1.1 他の人が使用中かどうかチェックする
if (Tan != ""){
Browser.msgBox("他の人が使用中です! しばらくお待ちください。");
return;
}
var cell= sheet.getRange("E8");
cell.setBackgroundColor("White");
cell= sheet.getRange("F8");
cell.setBackgroundColor("RED");
cell= sheet.getRange("E4");
cell.setValue(sted); // "E4"に"ED"をセットし退勤状態をKeep
var value = Browser.inputBox("社員コードを入力してください:");
if (value != "cancel"){ //Ver1.1 キャンセルの対応を行った。
sheet.getRange("D5").setValue(value);
}
}
// ******************************************************************************
//確認ボタンを押したときの処理
function myGetTime() {
var ss = SpreadsheetApp.getActiveSpreadsheet();
var Sno = fncGetSheetNo("入力")
var sheet = ss.getSheets()[Sno];
var Tvalue = sheet.getRange("D5").getValue();
// 社員コードのチェック
if (Tvalue == ""){
Browser.msgBox("エラー:社員が入力されていません!");
return;
}
// 出勤か退勤かの判断を行い時刻をセットする。
var cell = sheet.getRange("E4");
var sted = cell.getValue()
var cell = sheet.getRange("F1");
var setTime = cell.getValue()
sheet.getRange(9,5,1,2).clearContent(); // 出退勤時間範囲のクリア
if (sted == "ST")
{
sheet.getRange("E9").setValue(setTime);
}
else
{
sheet.getRange("F9").setValue(setTime);
}
// 社員のシート処理
var TanName = "担当" + Tvalue
var No0 = fncGetSheetNo(TanName)
if (No0 == null) { // Ver1.1 nullの対応
sheet.getRange(5,4,1,1).clearContent(); // Ver1.1 社員コードのクリア
return("");
}
var sheet2 = ss.getSheets()[No0];
// 社員のシートでカンレンダーのチェック
var kiNisuu = sheet2.getRange("O1").getValue();
var wkDay = sheet.getRange("E1").getValue();
var wkYear = sheet.getRange("E7").getValue();
var wkMonth = sheet.getRange("F7").getValue();
if (wkDay > 15) {
sheet2.getRange("A1").setValue(wkYear);
sheet2.getRange("B1").setValue(wkMonth); // 15日以上の時は年月をセットする
var nisuu = wkDay - 15 + 2;
}
else {
var nisuu = wkDay + 17 - kiNisuu + 2; // 31 30 29 28 日の対応
}
if (sted == "ST") {
sheet2.getRange(nisuu,4).setValue(setTime);
}
else
{
sheet2.getRange(nisuu,5).setValue(setTime);
var STtime =sheet2.getRange(nisuu,4).getValue();
sheet.getRange("E9").setValue(STtime);
}
var Gyosuu = setTan() // 社員名に色づけ処理
sheet.getRange(5,4,1,1).clearContent(); // Ver1.1 社員コードのクリア
}
// ******************************************************************************
// シート名からシートNoを求める関数
function fncGetSheetNo(inName) {
var sheet2 = SpreadsheetApp.getActiveSpreadsheet().getSheetByName(inName);
if (sheet2 != null) {
return(sheet2.getIndex() - 1);
}
else
{
Browser.msgBox("エラー:シート名が見つかりません");
return(null); // Ver1.1 return("")にすると親プロセスに戻らず終了していたので
} // null に変更した。
}
// ******************************************************************************
// 社員コードから社員に出退勤の色をつける Ver1.1より
function setTan() {
var Tansuu = 30; // ★社員を30人に固定している
var ss = SpreadsheetApp.getActiveSpreadsheet();
var Sno = fncGetSheetNo("入力");
var sheet = ss.getSheets()[Sno];
var Tvalue = sheet.getRange("D5").getValue(); // 社員コード
var sted = sheet.getRange("E4").getValue(); // 出勤か退勤かの判断
// 社員コードの一致する行を検索
for (var i = 2; i < (Tansuu + 1); ++i) { // 2行目から社員MAXまで
var tancd = sheet.getRange(i,1,1,1).getValue(); // A列の社員コードをtancdにセット
if (tancd == Tvalue) {
var cell= sheet.getRange(i,1,1,2); // A・B列を選択して
if (sted == "ST") { //出勤か退勤か
cell.setBackgroundColor("aqua"); //"E8"の背景色を水色(aqua)に
}
else
{
cell.setBackgroundColor("gray"); //"E8"の背景色を灰色(gray)に
}
return(i);
}
if (tancd == "") {
Browser.msgBox("エラー:担当者が見つかりません");
return("");
}
}
}
--------------------------------------------------------------------------------------
前提条件として下記の図のようなシートを担当者コード別に用意しておく事にしています。
担当者コードを入力しておくだけなので直ぐに用意できます。

また図形やボタンにスクリプトを割り当てるには、下記の図の様に表示して割り当てます。

まだまだ、改良の余地は沢山ありますがサンプルですので、ご容赦願います。
ちなみにiPhone やandroid携帯ではPCモードの表示がされないようですので利用できません。
最後まで読んで頂きました方、ありがとうございます。是非このブログのタイトルの下、テーマの右にあります[いいね!]ボタンを押してください。
また、ご要望・ご意見のある方、または、お試しになりたい方はこちらからのホームページ
からご連絡をお願い致します。
「iPadを利用したスプレッドシートの活用の件」と内容も入れてくださいますようお願い致します。
http://www.oo-com.com/contact.php
興味の無い方はパスしてくださっても構いませんが最後の文章のみご確認ください。
ちなみに、この文章はFaceBookにも転送されていますが、FaceBookでは図が表示されておりませんので
タイトルのリンクをクリックしてブログから閲覧願えれば幸いです。
<2011-07-16 スクリプトを全面更新しました。>
実際のタイムカードの画面には、下記図の様に、A・B列に担当者コードと名前を

セル"D7"の式には、"=vlookup(D5,A2:B30,2,false)"を埋め込み、名前を表示させるようにしておきます。
セル"E1"の式には "=day(D1)"
セル"F1"の式には "=hour(D1)& ":" & minute(D1)"
セル"E7"の式には "=year(D1)"
セル"F7"の式には "=month(D1)"
をそれぞれ埋め込みます。これは、スクリプトで利用しやすいようにする為に記述しています。
スクリプトは[ツール][スクリプトエディタ]で作成します。
スクリプトは以下の様になります。
// *********************************************
// * クラウドタイムカード Ver1.1 *
// *********************************************
// Author : OO-com.inc T.Oka
// 履歴
// 2011.07.13 Ver1.0 デリバリー
// 2011.07.16 Ver1.1 運用開始、複数の人が同時に処理できるように排他処理を行った。
// 出勤時、社員名の背景色を水色に退勤時はグレーにする。
// その他の対応細かい対応
//
//
// ******************************************************************************
//出勤ボタンを押したとき出勤の背景色を赤くする
function myBackColor() {
var ss = SpreadsheetApp.getActiveSpreadsheet();
var sted = "ST"
var Sno = fncGetSheetNo("入力")
var sheet = ss.getSheets()[Sno];
var Tan = sheet.getRange("D5").getValue(); //Ver1.1 他の人が使用中かどうかチェックする
if (Tan != ""){
Browser.msgBox("他の人が使用中です! しばらくお待ちください。");
return;
}
var cell= sheet.getRange("E8");
cell.setBackgroundColor("RED"); //"E8"の背景色を赤に
cell= sheet.getRange("F8");
cell.setBackgroundColor("White"); //"E9"の背景色を白に
cell= sheet.getRange("E4");
cell.setValue(sted); // "E4"に"ST"をセットし出勤状態をKeep
var value = Browser.inputBox("社員コードを入力してください:");
if (value != "cancel"){ //Ver1.1 キャンセルの対応を行った。
sheet.getRange("D5").setValue(value);
}
}
// ******************************************************************************
//退勤ボタンを押したとき退勤の背景色を赤くする
function myBackColor2() {
var ss = SpreadsheetApp.getActiveSpreadsheet();
var sted = "ED"
var Sno = fncGetSheetNo("入力")
var sheet = ss.getSheets()[Sno];
var Tan = sheet.getRange("D5").getValue(); //Ver1.1 他の人が使用中かどうかチェックする
if (Tan != ""){
Browser.msgBox("他の人が使用中です! しばらくお待ちください。");
return;
}
var cell= sheet.getRange("E8");
cell.setBackgroundColor("White");
cell= sheet.getRange("F8");
cell.setBackgroundColor("RED");
cell= sheet.getRange("E4");
cell.setValue(sted); // "E4"に"ED"をセットし退勤状態をKeep
var value = Browser.inputBox("社員コードを入力してください:");
if (value != "cancel"){ //Ver1.1 キャンセルの対応を行った。
sheet.getRange("D5").setValue(value);
}
}
// ******************************************************************************
//確認ボタンを押したときの処理
function myGetTime() {
var ss = SpreadsheetApp.getActiveSpreadsheet();
var Sno = fncGetSheetNo("入力")
var sheet = ss.getSheets()[Sno];
var Tvalue = sheet.getRange("D5").getValue();
// 社員コードのチェック
if (Tvalue == ""){
Browser.msgBox("エラー:社員が入力されていません!");
return;
}
// 出勤か退勤かの判断を行い時刻をセットする。
var cell = sheet.getRange("E4");
var sted = cell.getValue()
var cell = sheet.getRange("F1");
var setTime = cell.getValue()
sheet.getRange(9,5,1,2).clearContent(); // 出退勤時間範囲のクリア
if (sted == "ST")
{
sheet.getRange("E9").setValue(setTime);
}
else
{
sheet.getRange("F9").setValue(setTime);
}
// 社員のシート処理
var TanName = "担当" + Tvalue
var No0 = fncGetSheetNo(TanName)
if (No0 == null) { // Ver1.1 nullの対応
sheet.getRange(5,4,1,1).clearContent(); // Ver1.1 社員コードのクリア
return("");
}
var sheet2 = ss.getSheets()[No0];
// 社員のシートでカンレンダーのチェック
var kiNisuu = sheet2.getRange("O1").getValue();
var wkDay = sheet.getRange("E1").getValue();
var wkYear = sheet.getRange("E7").getValue();
var wkMonth = sheet.getRange("F7").getValue();
if (wkDay > 15) {
sheet2.getRange("A1").setValue(wkYear);
sheet2.getRange("B1").setValue(wkMonth); // 15日以上の時は年月をセットする
var nisuu = wkDay - 15 + 2;
}
else {
var nisuu = wkDay + 17 - kiNisuu + 2; // 31 30 29 28 日の対応
}
if (sted == "ST") {
sheet2.getRange(nisuu,4).setValue(setTime);
}
else
{
sheet2.getRange(nisuu,5).setValue(setTime);
var STtime =sheet2.getRange(nisuu,4).getValue();
sheet.getRange("E9").setValue(STtime);
}
var Gyosuu = setTan() // 社員名に色づけ処理
sheet.getRange(5,4,1,1).clearContent(); // Ver1.1 社員コードのクリア
}
// ******************************************************************************
// シート名からシートNoを求める関数
function fncGetSheetNo(inName) {
var sheet2 = SpreadsheetApp.getActiveSpreadsheet().getSheetByName(inName);
if (sheet2 != null) {
return(sheet2.getIndex() - 1);
}
else
{
Browser.msgBox("エラー:シート名が見つかりません");
return(null); // Ver1.1 return("")にすると親プロセスに戻らず終了していたので
} // null に変更した。
}
// ******************************************************************************
// 社員コードから社員に出退勤の色をつける Ver1.1より
function setTan() {
var Tansuu = 30; // ★社員を30人に固定している
var ss = SpreadsheetApp.getActiveSpreadsheet();
var Sno = fncGetSheetNo("入力");
var sheet = ss.getSheets()[Sno];
var Tvalue = sheet.getRange("D5").getValue(); // 社員コード
var sted = sheet.getRange("E4").getValue(); // 出勤か退勤かの判断
// 社員コードの一致する行を検索
for (var i = 2; i < (Tansuu + 1); ++i) { // 2行目から社員MAXまで
var tancd = sheet.getRange(i,1,1,1).getValue(); // A列の社員コードをtancdにセット
if (tancd == Tvalue) {
var cell= sheet.getRange(i,1,1,2); // A・B列を選択して
if (sted == "ST") { //出勤か退勤か
cell.setBackgroundColor("aqua"); //"E8"の背景色を水色(aqua)に
}
else
{
cell.setBackgroundColor("gray"); //"E8"の背景色を灰色(gray)に
}
return(i);
}
if (tancd == "") {
Browser.msgBox("エラー:担当者が見つかりません");
return("");
}
}
}
--------------------------------------------------------------------------------------
前提条件として下記の図のようなシートを担当者コード別に用意しておく事にしています。
担当者コードを入力しておくだけなので直ぐに用意できます。

また図形やボタンにスクリプトを割り当てるには、下記の図の様に表示して割り当てます。

まだまだ、改良の余地は沢山ありますがサンプルですので、ご容赦願います。
ちなみにiPhone やandroid携帯ではPCモードの表示がされないようですので利用できません。
最後まで読んで頂きました方、ありがとうございます。是非このブログのタイトルの下、テーマの右にあります[いいね!]ボタンを押してください。
また、ご要望・ご意見のある方、または、お試しになりたい方はこちらからのホームページ
からご連絡をお願い致します。
「iPadを利用したスプレッドシートの活用の件」と内容も入れてくださいますようお願い致します。
http://www.oo-com.com/contact.php
iPadを利用したスプレッドシートの活用1
iPadを利用して、EXCELの様に自由自在に表とか入力ができると
iPadの活用範囲が広がりますよね。
しかし、実際に利用してみるとEXCELやWORD、PowePointのビューア
としては利用できますが、入力をしてしまうとPCとのレイアウト
で互換性がなかったり思うように入力できず困った事はないでしょ
うか?
以前、Office2HDをご紹介したのですが、実際に使うと利用場面が
かなり限定されてしまいました。Office2HDからクラウド上で保存
するとレイアウトが崩れるからです。
そこでGoogleドキュメントのスプレッドシートを利用して実際に
iPadで利用できるものをご紹介したいと思います。
今回は、iPadを利用したタイムレコーダーを作成してみました。
出勤か退勤かを選択して担当者コードを入力するだけで
タイムカードとして記録されるソフトです。
スプレッドシートの簡単なスクリプトを利用して作成しています
のでEXCELでマクロの経験のある人なら作成できると思います。
開く時には PC版 で開く必要があります。

出勤、退勤ボタンを押しますと、担当者コードの入力画面が表示されます。

ここでは、バーコードリーダーで社員カードを読ませる事も可能です。
後は[確認ボタン]を押すだけで時刻が記録されて行きます。
記録された内容は、下記の図の様になりますのでPC側で残業や欠勤
などの情報を補足してタイムカードとして利用することができます。

クラウド上で動作しますので営業所等があっても簡単に対応できますね。
次回は具体的なスクリプトの紹介を行いたいと思います。
-----------------------------------------------------
2011-07-16
実際に運用してみていろいろと問題がありましたのでバージョンアップしました。
1点は、基本的にはiPadを置いての運用を想定していたので、同時に一人しか運用しないのですが、
実際にはPCでも処理ができるため、複数人が同時に処理を行います。
その際の排他制御を行うようにしました。
2点目は、社員名簿を表に表示させ、出勤したら水色・退勤したら灰色に表示するようにしました。
これで、自分の処理が正しく処理されたかどうかも判りますし、管理者とすれば出勤常態も判断する事ができます。
スクリプトの変更もアップしておきます。

iPadの活用範囲が広がりますよね。
しかし、実際に利用してみるとEXCELやWORD、PowePointのビューア
としては利用できますが、入力をしてしまうとPCとのレイアウト
で互換性がなかったり思うように入力できず困った事はないでしょ
うか?
以前、Office2HDをご紹介したのですが、実際に使うと利用場面が
かなり限定されてしまいました。Office2HDからクラウド上で保存
するとレイアウトが崩れるからです。
そこでGoogleドキュメントのスプレッドシートを利用して実際に
iPadで利用できるものをご紹介したいと思います。
今回は、iPadを利用したタイムレコーダーを作成してみました。
出勤か退勤かを選択して担当者コードを入力するだけで
タイムカードとして記録されるソフトです。
スプレッドシートの簡単なスクリプトを利用して作成しています
のでEXCELでマクロの経験のある人なら作成できると思います。
開く時には PC版 で開く必要があります。

出勤、退勤ボタンを押しますと、担当者コードの入力画面が表示されます。

ここでは、バーコードリーダーで社員カードを読ませる事も可能です。
後は[確認ボタン]を押すだけで時刻が記録されて行きます。
記録された内容は、下記の図の様になりますのでPC側で残業や欠勤
などの情報を補足してタイムカードとして利用することができます。

クラウド上で動作しますので営業所等があっても簡単に対応できますね。
次回は具体的なスクリプトの紹介を行いたいと思います。
-----------------------------------------------------
2011-07-16
実際に運用してみていろいろと問題がありましたのでバージョンアップしました。
1点は、基本的にはiPadを置いての運用を想定していたので、同時に一人しか運用しないのですが、
実際にはPCでも処理ができるため、複数人が同時に処理を行います。
その際の排他制御を行うようにしました。
2点目は、社員名簿を表に表示させ、出勤したら水色・退勤したら灰色に表示するようにしました。
これで、自分の処理が正しく処理されたかどうかも判りますし、管理者とすれば出勤常態も判断する事ができます。
スクリプトの変更もアップしておきます。

GALAXY S II SC-02Cを購入
ドコモの携帯を3年使ったので、スマートフォーンに変えました。
GALAXY S II SC-02Cです。
http://www.nttdocomo.co.jp/product/foma/smart_phone/sc02c/index.html
数多くある機種の中からこれを選択した理由は、
1.軽量である事 120g
2.速いCPU 1.2GHzデュアルコアプロセッサを搭載
3.連続待受時間が長い事 3G:約 640時間
4.内部メモリが大きい事 ROM 16GB
が大きな理由です。
実際、使ってみて iPhone4と比べてみてどうか?
と言うと
私的意見ですが、良くなっています。
有機ELディスプレイが特徴らしいのですが、私自身それほど
こだわりがないので違いがわかりません。それよりもサイズが
4.3インチと少し大きい分年寄りには見やすい事が嬉しいです。
iPhone と 比べると Android の操作性に違和感があったので
すが、GALAXY S II SC-02C ではかなり解消されているようです。
スピードが速すぎるので逆に違和感を覚えますが、慣れでしょうね。
Android のアプリも充実してきています。
iTunesを介さなくても、PCと直接データをやり取りできるので
楽ですね。その分ウィルス等の脅威にさらされる訳ですが対応する
アプリも出始めていますので恐れる必要はないでしょう。
総合的に見てiPhone4 と遜色ないレベルだと思います。
ひとつ難点があるとすれば、バッテリーの消耗がカタログ値よりは
低いと思います。実際に利用しているとあまり電話をしない状態で
置いていても結構早く消耗します。当然、常駐アプリなどの影響も
あるのでしょうがこの点は期待はずれでした。
しかし、iPhone4 にはない機能も沢山ありますので相殺できるで
しょう。

個人的には、このウィジェットのメニューが気に入ってます。
iPhoneには、ない機能ですね。
GALAXY S II SC-02Cです。
http://www.nttdocomo.co.jp/product/foma/smart_phone/sc02c/index.html
数多くある機種の中からこれを選択した理由は、
1.軽量である事 120g
2.速いCPU 1.2GHzデュアルコアプロセッサを搭載
3.連続待受時間が長い事 3G:約 640時間
4.内部メモリが大きい事 ROM 16GB
が大きな理由です。
実際、使ってみて iPhone4と比べてみてどうか?
と言うと
私的意見ですが、良くなっています。
有機ELディスプレイが特徴らしいのですが、私自身それほど
こだわりがないので違いがわかりません。それよりもサイズが
4.3インチと少し大きい分年寄りには見やすい事が嬉しいです。
iPhone と 比べると Android の操作性に違和感があったので
すが、GALAXY S II SC-02C ではかなり解消されているようです。
スピードが速すぎるので逆に違和感を覚えますが、慣れでしょうね。
Android のアプリも充実してきています。
iTunesを介さなくても、PCと直接データをやり取りできるので
楽ですね。その分ウィルス等の脅威にさらされる訳ですが対応する
アプリも出始めていますので恐れる必要はないでしょう。
総合的に見てiPhone4 と遜色ないレベルだと思います。
ひとつ難点があるとすれば、バッテリーの消耗がカタログ値よりは
低いと思います。実際に利用しているとあまり電話をしない状態で
置いていても結構早く消耗します。当然、常駐アプリなどの影響も
あるのでしょうがこの点は期待はずれでした。
しかし、iPhone4 にはない機能も沢山ありますので相殺できるで
しょう。

個人的には、このウィジェットのメニューが気に入ってます。
iPhoneには、ない機能ですね。




