purazumakoiの[はてなブログ]

技術メモから最近はライフログも増えてきてます。

サイボウズOffice6の予定の登録で今の時間をワンタッチで入れる

前もちょっとサイボウズグループウエアをいじったけど
サイボウズOffice6の出社ボタンを自動で押す - purazumakoiの[はてな]


今回は予定の登録で
ボタンを押すと今の時間が入るようにする。(厳密にはちょいちがうけども)
といっても分は15分単位という仕様なので、30分かどうかで時を調整


動作イメージ


document.forms[1]とかの番号にしないと動かないのはなぜだろうー?

// ==UserScript==
// @name           hogehoge time_add
// @namespace      http://d.hatena.ne.jp/purazumakoi/
// @description    時間を現在に
// @include        http://192.168.1.***
// ==/UserScript==


(function() {

// ボタン入れ用に作るdiv名
var nodeName = 'dButtonArea';

// 起動ファンクション 
 function fInit(){
  var divTags=document.getElementsByTagName("div");
  
  for (var i=0; i<divTags.length; i++){
   var obj = divTags[i];
   var className = obj.getAttribute('class');
   
   // classがmarginFullだったら
   if(className == "marginFull"){
    // div要素をcreate
    var newNode = document.createElement("div");
    newNode.id = nodeName;
    // div class="marginFull" の直前に新ノードを作成
    obj.parentNode.insertBefore(newNode, obj);
    
    // ボタン群を作成
    fMakeButton();
    break;
   }
  }
 }

  // ボタンを作成
   function fMakeButton(){
    var input = document.createElement("input");
    input.type="button";
    input.name="nowtime";
    input.id="nowtime";
    input.value="今の時間!";
    //input.setAttribute("onclick", "fBtn01(); return false;");
    input.addEventListener('click', function() { fBtn01() }, false);
    
    var element = document.getElementById(nodeName);
    element.appendChild(input);
   }
    // ボタン01
     function fBtn01(){
      var now_time = new Date();
      var hour = now_time.getHours() + 2;
      if(now_time.getMinutes() >= 30)
       hour++;
      
      // 開始 時
      document.forms[1].elements[16].selectedIndex = hour;
      // 開始 分
      document.forms[1].elements[17].selectedIndex = 1;
     }
 
 // 起動!!
 fInit();
})();


参考にしたところ


addEventListenerの関係で
GreaseMonkeyでonclickが使えなくてはまった - emergentのJavaScript入門日記 - g:javascript


↑のページの流れで。中身はよくはわかりませんが
XPCNativeWrapper - MDC