orl.wakayama-med 2.0

和歌山県立医科大学 耳鼻咽喉科・頭頸部外科

GASを使ってやりたいことを探りながら、エラーデバッグ

ときどき、以下のエラーがでてスクリプトが進まないことがあります。

メソッド getEvents(string,object) が見つかりません。(行 15、ファイル「派遣医スケジュール」)

きっと変数がDate属性になっていないからだと思うのですが、指定の方法がわかりません。ときどきできるのもなぜかわからないのですが、まあ、ほかの事をやりながら謎が解けたりするだろうと思って、

 

1.重複抽出 => アラート

2.月間予定表などのスプレッドシート作成

3.表示カレンダーパターンの切り替え

 

以上のテーマを考えてみたいと思います。

 

1. 重複抽出 => アラート 作成

特定の日でおなじ名前のイベントの時間が重複していればダメというもの。

Gsuiteなどにすれば問題にもならないのでしょうが、そういうわけにもいかないので、イベント名に含まれる各医師名の重複を見ることにします。

 

 そろそろ夏休みも終わりますが、結局できたのは、Date属性の宣言と、1週間予定の終了日設定でした。以下、参考にしました。

www.relief.jp

 

var startDate = new Date(sheet.getRange('B'+(3)).getValue());
Logger.log(startDate)
var endDate = new Date(startDate);
endDate.setDate(startDate.getDate() + 7);
Logger.log(endDate)
var events = calendar.getEvents(startDate,endDate);

 

やれやれ、Loggerlogでのエラーデバッグも慣れてきました。

 

 

GASでカレンダーイベントをスプレッドシートに二次元配置

スケジュールは月間と週間を作っています。

グーグルカレンダーに入力するところまでは行きましたが、実際人はカレンダーをクリックしません。結局エクセルシートをプリントアウトしたものを見に行くようです。

 

人の行動を変えるのは不可能のようで、GASを使って、スプレッドシートで一目で流れがわかる表を作らないといけないと考えました。

 

外勤先ごとに、個別のカレンダーがあり、派遣医の名前をいれたイベントが各日付に入力されています。これをスプレッドシートに書き出すのは、以前できましたが、もう少し整形してみたいと思います。

 

曜日の決まっているイベントはそのstarttimeを取得してもいいし、event[i]として曜日欄に順に入れもいいと思います。

以下のリファレンスをみると、カレンダー名は

Class Calendar  |  Apps Script  |  Google Developers

Class CalendarEvent  |  Apps Script  |  Google Developers

getNameで。

nameという変数に入れ込んで、setValueで書き込みました。

 

次に曜日指定ですが、こればjavascriptの様式にのっとる感じです。

Tryit Editor v3.5

これで、getDayを実行すると、日曜なので、0が返されるのがわかりました。

外勤の曜日に合わせて所定の列に表示させてみます。GASのリファレンスでもinteger: 整数と書いてありました。

Class DateField  |  Apps Script  |  Google Developers

// Logs the day of the birthday for contact 'John Doe'
var contacts = ContactsApp.getContactsByName('John Doe');
var birthday = contacts[0].getDates(ContactsApp.Field.BIRTHDAY)[0];
Logger.log(birthday.getDay());

これを見ると、連絡先からもひっぱってこれるようです。

カレンダーのevents[i]から曜日はひっぱれず、startTimeからひっぱります。

大体、完成なんですが、イベントを取得する週の指定をしてみたいと思います。

 

スプレッドシートで、日曜の日付は入力規則でカレンダーから選ぶ形とし、月曜以降は+1で日を足していき一週間を表示させます。

 

この初日を

getEvents(new Date('2018/07/22'), new Date('2018/07/29'))

セル指定でいれると、

 getRangeでセルを指定したのち、getValue()で値をとり、初日と最終日で範囲を指定しました。

Class CalendarApp  |  Apps Script  |  Google Developers

 

なんとか出来てきました。

学校健診

学会出張 などが病棟、外来スタッフと共有すべきスケジュールだと思われ、カレンダーの整理をしました。

 

 

 

機能更新のたびにSQL

外来マシンが3月以来の機能更新で、1803へアップデート、またぞろ、SQLを忘れておりました。

今度は再起動をしてから再挑戦し、無事アップデートができました。

 

いいかげん3Dプリンター使わないといけないのかもしれませんが、まだまだ手にしたこともありません。

https://c.s-microsoft.com/ja-jp/CMSImages/1399_Panel2_FullBleed_HeroROW.jpg?version=40ec83ca-a723-65f5-266a-707a542dd8fb

Windows 10 の 3D で創造、リミックス、共有 | ペイント 3D 、フォト、 Remix 3D 、 Office の 3D と Mixed Reality ビューアー

 

outlookとgmailの同期

そもそもは、faxで同門の先生方などに通達を出す必要があるため、PC-FAXを使用したいとおもったことでした。

スマホネイティブな医局員が増えてきましたので、カレンダー管理や住所録はクラウド管理にしたく、gmailに集約させようと思いますが、どうしても連絡先ツールは脆弱でoutlookなどと連携させる必要を感じておりました。なるべく無料ツールで運用するルールにしているのですが、オフィスソフトはほぼ全てのマシンに入り続けた20年であるし、outlookぐらいが財政を逼迫しないのではないかと。。。

さらに、PC-FAXは”Windowsアドレス帳”を使うし、scansnapoutlook連携ならPDFをメールで送れるようなので(しかしこれもバグがでますが)、本意ではないですが、使ってみることにしました。

 

デスクトップ版のoutlookと、クラウド版のoutlook.comがあり、さらに、”メール””ピープル”とブラウジングアプリもあるようで、混乱します。

gmailify的な同期ができるようなのですが、個人のアカウントと医局のアカウントの混在を避けるにはある程度まとまった時間での確認があると、深堀りできずにおりました。

 

今回、自分の個人アカウントをデスクトップ版outlookに設定してみました。二段階認証に対応せず、アプリパスワードを入れる必要があると、端から暗雲が立ち込めます。

https://support.microsoft.com/ja-jp/help/12409/microsoft-account-app-passwords-two-step-verification

 

事前にスマホでは、oulook.comにgmailを登録しているので、メールやカレンダー予定などは同期しているようでした。ただし重複してお知らせがくるのでいい加減うんざりしていたのでした。

 

デスクトップ版をみると、gmailの設定などは反映されていません。どういう立ち位置なのか、ソフトウェア歴史が長いと難しいですね。

 

えー、クラウド版は二種類あって、PC版(ブラウザでアクセス)と、スマホアプリ版が違うということな気がしてきました。

スマホ版は、あくまでもAndroid上での設定なのでは、、、

 

 

 

 

レビュー事始め

なんだかやったことのない仕事が来たので、覚書です。

エルゼビアのレビューワ管理システム?ESSというのを使ってみました。

jp.elsevier.com

Elsevier Editorial System (EES) は、エルゼビアが発行するジャーナルにおいて、編集プロセスを管理するために使われているオンラインシステムです。著者、編集者、および査読者が利用できるこのEESは、編集プロセス全体をサポートします。

だそうです。レビューワだけじゃなくてそりゃ、オーサも使いますね。

Scopus と ScienceDirectへのアクセス

  • 世界最大の規模を誇る抄録と引用情報のデータベース Scopus に30日間無償にてアクセスし、ご自身が行う査読の作業に役立てることができます。
  • 同様にScopus にアクセスすれば、ScienceDirectに搭載されたエルゼビアの刊行物に含まれる論文の全文を30日間無償にて閲覧することができます。」

スクープスとやらの存在自体を知りませんでした。。。1か月は、論文が無償で全文読めると書いてあるような。

ビデオもマニュアルもありました。

www.youtube.com

 

こういうのも見ないといけないんでしょうけれど。。

researcheracademy.elsevier.com

Infineon TPMと、エラー 0x80070714=>SQLサービス停止

win10のアップデートはいつもゆっくり進みます。

hpのデスクトップはOSをどんどん上げてwin10にしているので、メモリをたしても優しく扱って挙げないと機嫌を損ねる可能性があり、手がかかります。

 

Infineon TPMというエラーがでました。

 

f:id:orlwmu:20180325130312p:plain

 

TPM

OPTIGA™ TPM - Infineon Technologies

f:id:orlwmu:20180325141231p:plain

 

そして

外来のマシンは相変わらず、エラーコードはSQL関連。正直オンライン科加算もあり、CPAPはすべてクラウドへあげてほしいものです。

f:id:orlwmu:20180325182434p:plain

msconfigからSQL関連のサービス3つを外してもう一度アップデートを試します。

answers.microsoft.com

 だいぶ先まですすんだのですが、やはりインストール途中で弾かれます。

海外のwikiでは、

0X80070714の原因は何ですか?

0X80070714のエラーは、Windowsシステムファイルの破損によって発生する可能性があります。破損したシステムファイルのエントリは、コンピュータの快適さを損なう可能性があります。

システムファイルにエラーが発生する可能性のあるイベントが多数発生する可能性があります。不完全なインストール、不完全なアンインストール、アプリケーションやハードウェアの不適切な削除 コンピュータがウイルスやアドウェア/スパイウェアの攻撃から回復した場合、またはコンピュータが不適切に停止した場合にも発生する可能性があります。上記のすべてのアクティビティは、Windowsシステムファイル内のエントリの削除または破損を招く可能性があります。この破損したシステムファイルは、アプリケーションが正常に動作するために必要な情報とファイルが間違ってリンクされていることにつながります。

 

とあるし、修復ツールもあるようですが。。。

How To Fix 0X80070714 Error?

ファイルの破損はあるかもしれません。修復ツールを使ったあとに再度SQLサービスをとめるといいのかもしれません。でもやり始めてすぐ、こればレジストリチェッカで小銭を稼ぐタイプだとわかり、アンインストール。

msconfigでチェックは外したけど、適用ボタン押してない。。。 => ちがう、再起動してから反映されることようやく気づきました。

f:id:orlwmu:20180325194419p:plain

 

やれやれ、もう一度アップデートします。

無事にアップデートできました。何度か再起動しましたが、mission complete, 溜まっていたセキュリティパッチもついでに入れました。

最終的にサービスを基に戻し、フィリップス社のencoreも無事に動くことを確認しました。

 

f:id:orlwmu:20180325211638p:plain

 

 

 

Windows Modules Installer Worker fan頑張ってます

医局の仕事というわけではないのですが、win10共通の問題として。

個人もちのsurface pro4を立ち上げるとfanがうなっており、

f:id:orlwmu:20180317130329p:plain

まあ、メモリはchromeが食っているのですが、CPU30%以上をこの、Windows Modules Installer Workerが使用しています。これがfanの原因だと思われます。

www.sumahoinfo.net

原則放置のようなので、このままとしますが、最近有線端末のwin10でupdateが中断する事象が多発しています。プロクシとの相性問題だと思いますが、これまた困った問題です。

そして、surface pro4のfanは数分で静かになってくれました。