G Suiteに移行して、無料版のDriveに保存していたデータのオーナー権限を移すために一度データをダウンロードして、G Suiteのアカウントでファイルをアップロードしました。
前のデータが必要になって使おうとしてみたらGoogle Drive内で作成したSpreadsheetが使えなくなってました….
一応ダウンロードしたデータのバックアップは取ってましたが、Spreadsheetの形式のままダウンロードされたようで、使用不能の状態でした。
確認する前にゴミ箱からデータを削除してしまい、どうすることも出来ません。
ダメ元でグーグルに連絡して復元して下さいとお願いしたところ、自分がオーナーのファイルだとか、ゴミ箱から削除してしまったのかとか多少のやり取りはありましたが無事復元してくれました。
無料アカウントだから諦めてましたがよかった。
困ってる方はこちらのチャットで連絡を。
日本語には対応していないみたいなので英語でのチャットになります。
ワードプレスのプラグインで受け付けた予約を、自分のグーグルカレンダーに自動で登録出来れば便利なのになぁ‥というのは前から思ってました。
しかし、ワードプレスとグーグルカレンダーは全く違うシステムなので、そう簡単には連動させてくれません。
もちろん、ワードプレスには便利なプラグインが沢山ありますし、予約システムもプラグインをインストールするだけで構築出来てしまいます。
が、しかし、グーグルカレンダーで予定を管理してるのに別のシステムで管理するのは面倒だし分かりにくい。
どうせならグーグルカレンダーで一元管理させてしまおうではないかと思い試行錯誤してみました。
この辺はいくらでも情報があるので割愛しますが、まずは反映させるグーグルカレンダーの設定を一般公開しておきます。
今回私が使ったのはRestaurant Reservationsというプラグインです。
他にも色々ありますが、シンプルに利用するにはこれが最適ではないかと。
(どのプラグインも大体同じですが)このプラグインも予約を受け付けた時に登録してあるメールアドレス宛に情報が送られてきます。
その送られてきた情報を利用します。
何はともあれまずはワードプレスにあるデータを取り出さないと始まりません。
データベースからエクスポートする方法もあるようですが私には高度過ぎるのでもっと簡単な方法で取り出します。
スプレッドシートを用意してツールのスクリプトエディタより下記のコードを記載します。
for(var n in threads){
var thd = threads[n];
var msgs = thd.getMessages();
for(m in msgs){
var msg = msgs[m];
var body = msg.getBody()
sheet.getRange(row+1, 1).setValue(body);
edit();
row++
}
Utilities.sleep(1000);
}
}
New Booking Requestというタイトルのメールの本文をA列にエクスポートしていきます。
検索対象は1日にして時間主導型(1日単位)のトリガーを設定します。
これでその日に受け取ったメールがある場合は最終行に追加されていきます。
下記コードをさらに追加
for(var i=2; i< =activeSheet.getLastRow(); i++){ var currentValue = activeSheet.getRange('A'+i).getValue(); currentValue = currentValue.replace(/(^\s+)|(\s+$)/g, ""); currentValue = currentValue.replace(/[\n\r]/g,""); currentValue = currentValue.replace(/amp;/g,""); activeSheet.getRange('A'+i).setValue(currentValue); var string = activeSheet.getRange("A" + i).getValue(); var last = string.length; var people = string.indexOf("people") var name = string.indexOf("<br>") var firstname = string.indexOf("</p>") var time = string.indexOf("M") var pending = string.indexOf("View pending bookings") var confirm = string.indexOf("Confirm this booking") var reject = string.indexOf("Reject this booking") var length1 = string.slice(people+10,time+1); activeSheet.getRange(i,2).setValue(length1); var length2 = string.slice(name+4,people); activeSheet.getRange(i,4).setValue(length2); var length3 = string.slice(firstname+7,name); activeSheet.getRange(i,5).setValue(length3); var length4 = string.slice(pending+38,confirm-18); activeSheet.getRange(i,7).setValue(length4); var length5 = string.slice(confirm+37,reject-18); activeSheet.getRange(i,8).setValue(length5); activeSheet.getRange(i,3).setFormula("=B"+i+"+time(0,60,0)") } }
メールの本文をエクスポート?した場合何故かメールによって空白があったり、改行されていたりと形式が違ってました。
そのため、最初に空白と改行を削除しました。
次にamp;というのを空白に置換えてますが、amp;が入っているとワードプレスのプラグイン上でconfirmやrejectの処理が行えないので削除することにより処理を行えるようにしています。
後は特定の文字列までの文字数を検索してそれに合わせて予約時間、予約相手などのデータを取り出してます。
こんな感じになると思います。
スプレッドシートの記載
ここまで出来たら後はカレンダーに登録するスクリプトを実行するだけです。
var sheet = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet();
var row = sheet.getLastRow();
var cal = CalendarApp.getDefaultCalendar();
for(var i=2; i< =row; i++){ if(sheet.getRange(i,6).getValue() == ""){ sheet.getRange(i, 6).setValue("done"); var cname = sheet.getRange(i,5).getValue(); var d1 = sheet.getRange(i,2).getValue(); var d2 = sheet.getRange(i,3).getValue(); var d3 = sheet.getRange(i,4).getValue(); cal.createEvent(cname, d1, d2, {description: d3+'人', location: '事務所'}); } } }
スプレッドシートに実行ボタンを追加
function onOpen(e){
var arr = [
{name: “メール取得”, functionName: “getMail”},
{name: “カレンダー登録”, functionName: “makeCalEvent”}];
var spreadsheet = SpreadsheetApp.getActiveSpreadsheet();
spreadsheet.addMenu(“機能”, arr);}
最初から方向性はわかってました。
予約データをスプレッドシートにエクスポートさせて、そのデータを元にカレンダーに登録させる。
エクスポートしたデータをカレンダーに登録させるような形式に変換するところが一苦労でした。
この連動を使うと、予約したと同時にカレンダーに登録されるわけではなく、自分で確認した予定だけを登録することが出来ます。
もちろん、予約と同時にカレンダーに登録させたい場合はトリガーを設定すればいいだけです。
また、確認後7列目のリンクに飛べばプラグインにも反映させるので、確認のメールが相手に送られます。
私が作ったデータはこちらからご確認下さい。
もちろん予定を登録して頂いてもほとんどRejectすると思うのでカレンダーへの反映は確認できないかもしれませんが…
念願の機能が搭載されました。
インターネットを利用できないときにも、Googleドライブがあれば作業を続けることができます。
この機能を設定すると、次回オフラインになっても、Google 文書、スプレッドシート、プレゼンテーション、図形描画を表示したり、フォルダを並べ替えたり、Google ドライブ内のフォルダに格納したファイルを編集したりできるそうです。
オフラインアクセスを利用できるのは、Chrome か Chrome OS 端末を使用している場合のみです。
また、Chrome OS を使用している場合はオフラインアクセスが既に設定されているため、下記の手順を行う必要はないです。
ドライブへのオフラインアクセスを設定できるのは、1 件の Chrome プロフィールにつき 1 つの Google アカウントのみです。
別のユーザーにより既にオフライン アクセスが設定されているために自分でオフラインアクセスを設定できない場合は、新しい Chrome プロフィールを作成してから上記の手順を行って、自分のアカウントにオフラインアクセスを追加します。
Chrome OS を使用していて、別のユーザーが既に設定しているためにオフライン アクセスを設定できない場合は、設定を行ったユーザーとしてログインします。
インターネットに接続していないときでも、Google 文書、スプレッドシート、プレゼンテーション、図形描画を表示することができます。
また、Google 文書、プレゼンテーション、図形描画はオフライン中でも作成、編集することができ、Google スプレッドシートの新バージョンへの切り替え後であればスプレッドシートを作成、編集することも可能です。Google フォームはオフラインでは利用できません。
ドライブにオフラインでアクセスする必要がなくなった場合は、ブラウザ ウィンドウの右上にある歯車のアイコンをクリックし、[オフライン機能を無効にする] を選択します。
現在のところ、オフライン アクセスを利用できるのは Google ドライブの一部に限定されてるみたいです。
ウェブ | Android | iOS | ||||
表示 | 編集 | 表示 | 編集 | 表示 | 編集 | |
マイ ドライブ | ||||||
文書 | ||||||
スプレッドシート* | ||||||
プレゼンテーション | ||||||
図形描画 | ||||||
他のドライブ ファイル |
*オフラインの編集は、Google スプレッドシートの新バージョンへの切り替え後に作成したスプレッドシートでのみ行うことができます。
また、[マイ ドライブ] の編集はスター付きのファイルとフォルダに限定されています。
インターネット接続が不安定な環境で作業している場合は、Chrome ブラウザに「https://drive.google.com/#offline」と入力すると、安定したオフライン ドライブのビューが表示されます。
公共のパソコンや共有パソコンでオフラインアクセスを有効にすると、かなり危ないです。
便利なのと危険は紙一重ですね。
Googleフォームをカスタマイズして、無料でFFS理論を診断できるツールを公開してましたが、諸事情により削除いたしました。
ちなみにFFS理論とは下記のような理論だそうです。
FFS(Five Factors & Stress)理論とは、「ストレスと性格」の研究において開発されたものです。
人が意識的、無意識的に考え、行動するパターンを5因子で計量し、ストレス値においてポジティブな反応か、ネガティブな反応か分析します。
その結果、その人が保有している潜在的な強みが客観的に分かります。
これを診断するには色々な質問に答えて、点数を計算して導かれるのですが、計算が少々大変だったのでWEB上で分析できるツールを公開してました。
分析方法や詳細を知りたい方はヒューマンロジック研究所のページでご確認ください。
http://www.human-logic.jp/about/
Gmailが手書き入力に対応したらしいってことで確認してみました。
まずgmailの画面で設定をクリック
設定画面ですべての言語オプションを表示をクリック
入力ツールを有効にするにチェックを入れる
入力ツールの鉛筆マークの日本語を選択する。
チェック後設定画面に戻って、画面下の変更を保存をクリック
これでgmailの入力画面で鉛筆マークが出てくるので手書き入力したい場合はこのマークをクリックすると手書きが出来るようになります。
手書きの文字をメールで送れるのかと思ったのですが、結局はIMEパッドの手書き入力と同じことでした。
手書きのメールが送れるようになるとある意味面白いのになー。
多分使わないだろーけど。