約 4,711,471 件
https://w.atwiki.jp/bottle/pages/42.html
DB設計関連/Lotus Script② スクリプト・サンプル集 フロントエンド制御 msgBoxのパラメータ(早見表)(by ToRU's PaGE の Notes/Domino Powerup Guide の No.18を参照してください) 文書の作成 文書自動作成エージェント(by ToRU's PaGE の Notes/Domino Powerup Guide の No.10を参照してください) 文書の削除 Notesの場合の処理方法(by LotusNotesな日々) 競合文書回避 競合回避方法(他文書)(by LotusNotesな日々) 競合回避方法(Notes)(by LotusNotesな日々) アクセス権限 LotusScriptで権限を確認する-2(by LotusNotesな日々) LotusScriptで権限を確認する(by LotusNotesな日々) 文字列操作(改行処理含む) Implode関数(R5版)(by ToRU's PaGE の Notes/Domino Powerup Guide の No.28を参照してください) 改行処理例 メール送信関連 文書リンク送信用メール作成 ワークフロー用自作クラス 子文書作成 簡易読込履歴作成(by ド壺) リッチテキストフィールド 複数のアイテムに分割されたフィールドの値を置き換える方法(by IBM公式) リッチテキストの入力チェックをする(by LotusNotesな日々) 添付ファイル有無確認方法(by ド壺) 配列処理 オブジェクト変数を配列として扱う プロファイル文書管理 プロフィール文書を削除する方法(by IBM公式) 日付操作 指定月の最終日を計算する(by ToRU's PaGE の Notes/Domino Powerup Guide の No.14を参照してください) ソート クイックソートとインサートソートのコンビネーション(by ToRU's PaGE の Notes/Domino Powerup Guide の No.15を参照してください) LotusScriptによるソート(by ToRU's PaGE の Notes/Domino Powerup Guide の No.7を参照してください) Notes⇔Excel連携 スクリプトからVBA for Excelを動かす ノーツのビューをEXCELに出力(1) 基本編(by ToRU's PaGE の Notes/Domino Powerup Guide の No.19を参照してください) ノーツのビューをEXCELに出力(2) 応用編(by ToRU's PaGE の Notes/Domino Powerup Guide の No.20を参照してください) EXCEL連携(1) ~ EXCELを起動してみよう(by ToRU's PaGE の Notes/Domino Powerup Guide の No.23を参照してください) EXCEL連携(2) ~ ビューをEXCELに書き出す(by ToRU's PaGE の Notes/Domino Powerup Guide の No.24を参照してください) EXCEL連携(3) ~ ビューをEXCELに書き出す(高速バージョン)(by ToRU's PaGE の Notes/Domino Powerup Guide の No.25を参照してください) EXCEL連携(4) ~ ビューにEXCELを呼び出す(by ToRU's PaGE の Notes/Domino Powerup Guide の No.26を参照してください) EXCEL連携(5) ~ ビューにEXCELを呼び出しマージする(by ToRU's PaGE の Notes/Domino Powerup Guide の No.27を参照してください) EXCEL連携(6) ~ 任意のビューの選択文書をEXCELに書き出す(by ToRU's PaGE の Notes/Domino Powerup Guide の No.43を参照してください) その他 LotusScript で接続文書を作成・更新する方法(by IBM公式) LotusScript のエージェントから CGI プログラムを呼び出す方法(by IBM公式) ノーツでパスワードを作ってみよう(by ToRU's PaGE の Notes/Domino Powerup Guide の No.4を参照してください) ビュー上での文書の貼り付けを禁止する(by ToRU's PaGE の Notes/Domino Powerup Guide の No.13を参照してください) Formフィールドの値入替(by ド壺) スクリプトからWSHを動かす
https://w.atwiki.jp/boare/pages/32.html
編集自動化スクリプトのサンプル スクリプトの呼び出し仕様などが確定していないので,下記のサンプルは疑似コードです. 試してみたい方は、それぞれのスクリプトのソースコードと思しき部分をテキストファイルにコピペしてUTF-8で保存し、Cadencii.exeの置いてあるフォルダ直下の「script」というフォルダに放り込んでください。 トラックの内容をUTAUの「resampler*.exe」と「wavtool.exe」を使ってレンダリングするスクリプト エンベロープをはじめとした各種パラメータは設定・反映されません UTAU音源でレンダリング メタテキストの内容をファイルに保存する public static class SaveMetaText { public static bool Edit( Boare.Lib.Vsq.VsqFile vsq ) { vsq.Track[1].printMetaText( @"c \meta_text.txt" ); return true; } } 歌詞情報を取得し、ファイルに保存する public static class PrintLyric { public static bool Edit( Boare.Lib.Vsq.VsqFile Vsq ) { System.IO.StreamWriter sw = null; try { sw = new System.IO.StreamWriter( @"c \lyrics.txt" ); for ( Boare.Lib.Vsq.Iterator itr = Vsq.Track[1].getNoteEventIterator(); itr.hasNext(); ) { Boare.Lib.Vsq.VsqEvent item = (Boare.Lib.Vsq.VsqEvent)itr.next(); int clStart = item.Clock; int clEnd = clStart + item.ID.Length; double secStart = Vsq.getSecFromClock( clStart ); double secEnd = Vsq.getSecFromClock( clEnd ); sw.WriteLine( secStart + "\t" + secEnd + "\t" + item.ID.LyricHandle.L0.Phrase + "\t" + item.ID.LyricHandle.L0.PhoneticSymbol ); } } catch { return false; } finally { if ( sw != null ) { sw.Close(); } } return true; } } 全ての音符を半音上げる public static class UpHalfStep { public static bool Edit( Boare.Lib.Vsq.VsqFile Vsq ) { for ( int i = 1; i Vsq.Track.Count; i++ ) { for ( Boare.Lib.Vsq.Iterator itr = Vsq.Track[i].getNoteEventIterator(); itr.hasNext(); ) { Boare.Lib.Vsq.VsqEvent item = (Boare.Lib.Vsq.VsqEvent)itr.next(); if ( item.ID.Note 127 ) { item.ID.Note++; } } } return true; } } 全ての音符の長さを32分音符分だけ短くする public static class Trim32 { public static bool Edit( Boare.Lib.Vsq.VsqFile Vsq ) { for ( int i = 1; i Vsq.Track.Count; i++ ) { for ( Boare.Lib.Vsq.Iterator itr = Vsq.Track[i].getNoteEventIterator(); itr.hasNext(); ) { Boare.Lib.Vsq.VsqEvent item = (Boare.Lib.Vsq.VsqEvent)itr.next(); // 32分音符の長さは,クロック数に直すと60クロック if ( item.ID.Length 60 ) { item.ID.Length -= 60; } } } return true; } }
https://w.atwiki.jp/slm2j/pages/4.html
スクリプトのサンプルを貯めていく帳面です。
https://w.atwiki.jp/gameguru/pages/17.html
サンプルゲームなどで使用されている Luaスクリプトで有用なものを紹介していきます。 Luaスクリプトの基本編 テキストやパネルを表示する メッセージを表示する 画像を表示する HUDを非表示にする オリジナルのHUDを作る フックショット スタッフロールを作る レーダーの表示
https://w.atwiki.jp/sakurascript/pages/25.html
活用例とか役に立つかも知れないスクリプトとか。 テクニック系 スクリプトの挙動を利用する例 手動タイムアウト 手動タイムアウト2 スクリプト集 開発補助系 シェルの触り判定作成補助 テクニック系 スクリプトの挙動を利用する例 手動タイムアウト *尋問 :(7)プリンを食べたのはお前か! _わたしが食べました _ぬれぎぬです \_w[5000]\c いつまでも黙秘が通用すると思うな! 選択肢を表示後、5秒経つとバルーンをクリアして先に進む。 SSPではトークを表示中でも選択肢をクリックできる仕様を利用した例。ウェイトの後に\cで強制的にクリアするだけなので手軽にできる。ミニゲームにも使える。 \_w[5000]の代わりに、 \n5\_w[1000]\c[char,1]4\_w[1000]\c[char,1]3\_w[1000]\c[char,1]2\_w[1000]\c[char,1]1\_w[1000]\c[char,1] とするとよりゲームっぽくなる。 手動タイムアウト2 Ctrlキーによるスキップ中はウェイトが一瞬で飛ぶので、↑の例は時間制限も何もなくなってしまうのが難点。そこで、\![timerraise]の出番。 *尋問 :(7)プリンを食べたのはお前か! _わたしが食べました _ぬれぎぬです \![timerraise,5000,1,時間切れ] *時間切れ :(0)いつまでも黙秘が通用すると思うな! これならCtrlスキップでも時間計測に影響が出ません。 スクリプト集 開発補助系 シェルの触り判定作成補助 SSP専用コマンド \![enter,selectmode,rect] 系を活用した専用イベント。 dic_ext_shellrect.txt surfaces.txtの触り判定座標を作る時のお供に。里々・SSP専用。 マウスドラッグで矩形選択をすると座標が出てくる。のでコピペ。というちょっと力技。 ころぺたが使えない、又はゴーストの起動だけで済ませたい人向け。 注意 文字コードはShift_JISです。ブラウザから見ると文字化けするかも。 保存ファイル名にも注意。里々はdicから始まる辞書ファイルでないと読み込んでくれません。 里々は里々/整備班カスタムの最新版を使用して下さい。 使い方 このファイルをメイン辞書のあるフォルダにつっこむ(ファイル名はdic_ext_shellrect.txtを推奨) ゴーストを起動する or 辞書をリロードする 次のうちどちらかで起動する 0キー 又は 1キーを押す [Ctrl+S]で入力Boxを開き、\![raise,rectmodebigin0] 又は \![raise,rectmodebigin1] と入力する 起動すると矩形選択モードに入るので領域を選択 領域選択を終えると自動でInputBoxが開く Boxに選択した領域の座標数値が入っているのでコピペ 仕様 出力される数値は自動的にsurfaces.txt用に自動変換されています(左上→右下へと矩形選択した時のデータに並べ替え)
https://w.atwiki.jp/sakurascript/pages/14.html
さくらスクリプト ukadoc未捕捉 イベント オープン サーフィス フォント・音 基本コマンド 基本非汎用 未分類 環境変数ほか
https://w.atwiki.jp/bottle/pages/40.html
DB設計関連/Lotus Script① ノーツにおけるオブジェクト指向(ノーツ・スクリプトの基本) オブジェクト指向って何? オブジェクト変数宣言方法 フロントエンドとバックエンドの違い(作成予定中) ノーツ・スクリプトはどこに記入すればいい?(編集中) クラス包含関係図 参考 (参考)「オブジェクト変数が設定されていません」エラーの意味と対処方法について(by IBM公式) (参考)$ から始まる変数に対して拡張クラス構文は使えますか(by IBM公式)
https://w.atwiki.jp/sakurascript/pages/17.html
イベントコマンド 特殊なコマンドはSHIORIイベントと連動する事が多いので、ukadocのSHIORI Eventの熟読を推奨。併せて参照して下さい。 イベントコマンド \4 \5 \![move] \![moveasync] \![move]、\![moveasync]について \![set,position,x,y,スコープID] \![reset,position] \![updatebymyself] \![updatebymyself,checkonly] \![update,platform] \6 \7 \![executesntp] \![execute,headline,ヘッドライン名] \![biff] \![vanishbymyself] \![vanishbymyself,ゴースト名] \+ \_+ \![change,ghost,ゴースト名] \![change,shell,シェル名] \![change,balloon,バルーン名] \![call,ghost,ゴースト名] \v \![set,windowstate,stayontop] \![set,windowstate,!stayontop] \![set,windowstate,minimize] \![set,wallpaper,ファイル名,オプション] \![set,tasktrayicon,ファイル名,テキスト] \![set,trayballoon,オプション,オプション,オプション...] オプション詳細 \![raise,イベント名,r0,r1,r2...] \![embed,イベント名,r0,r1,r2...] \![timerraise,時間,繰り返すか否か,イベント名,r0,r1,r2...] \![raiseother,ゴースト名,イベント名,r0,r1,r2...] \![timerraiseother,時間,繰り返すか否か,ゴースト名,イベント名,r0,r1,r2...] \![raiseplugin,プラグインのIDまたは名前,イベント名,r0,r1,r2...] \![notify,イベント名,r0,r1,r2...] \![notifyother,ゴースト名,イベント名,r0,r1,r2...] \![notifyplugin,プラグインのIDまたは名前,イベント名,r0,r1,r2...] イベントコマンド \4 現スコープのキャラクターが離れる距離まで移動。 キャラが重なっている時に。 「寄るな!」「触るな!」「抱きつくな!」「暑苦しい!」etc \5 現スコープのキャラクタが接触する距離まで移動。 \![move] 指定座標まで移動。 下記のオプションを利用してあちこちに移動可能。 初回起動時の初期位置を\0を左側、\1を右側にしたい時に。 \0\![move,-200,0,0,screen,right,bottom]\1\![move,-650,0,0,screen,right,bottom] 画面領域にもよるので数値は要調整。 \![moveasync] 指定座標まで非同期移動。 \![move]、\![moveasync]について \![move,X座標,Y座標,移動時間,基準とするキャラ,基準とするキャラ基準位置,動かすキャラ基準位置] 移動時間以降は省略可能。 X座標、Y座標は目的の座標を指定。 負の値も指定可能。 どちらかを省略するか、"fix"と指定した場合は、その座標を保持する。 移動時間はミリ秒単位。 移動時間を省略、もしくは0を指定した場合は瞬時に移動。 基準とするキャラは、別のスコープの相対位置に移動する際に使用。 指定方法は0 1等のキャラクターを表わすIDの数値の他、自分自身をあらわすme、スクリーン左上を起点とするscreenがある。 省略時はscreenが指定したとみなされる。 基準とするキャラ基準位置は、指定した座標をそのサーフィスのどこを起点とするかを指定する。 X基準.Y基準、という形で指定し、それぞれ X基準:left,right,base,center Y基準:top,bottom,base,center の4つの指定を組み合わせ、right.base、などのように記述する。 なお、baseはsurfaces.txt内のpoint.basepos指定に従う。 省略時は、left.topを指定したとみなされる。また、screen指定の場合はbaseは利用できない。 動かすキャラ基準位置は、基準とするキャラ基準位置と同じように指定する。 \![set,position,x,y,スコープID] 指定スコープをXY座標に固定する。(ドラッグ等を不可能にする) CROW専用。 \![reset,position] 上記を解除する。 CROW専用。 \![updatebymyself] ネットワーク更新イベントを開始する。 右クリックメニューからのネットワーク更新を選択した時と同じ挙動を開始。 自動ネットワーク更新などの実装に。テストの際は必ず作業ファイルのバックアップを取っておこう。 自動ネットワーク更新をする場合、↓の \![updatebymyself,checkonly] でチェックして「更新がある」時だけ行う方が良い。余計なトークをしなくなる。 \![updatebymyself,checkonly] ネットワーク更新チェックイベントを開始する。 SSP専用。 起動時とかにチェックして、「更新があるみたいだよ」などで通知してみるとか。 ただし、勝手にネットに接続する行為は不快に感じる人も多いので、搭載するならユーザ側がON/OFFできるスイッチを一緒につけておくのがベスト。 具体的にこのコマンドでネットワーク更新チェックを実装したい場合 このコマンドを使った時、更新ファイルがあるとOnUpdateCheckCompleteイベントが、それ以外だとOnUpdateCheckFailureイベントがそれぞれ発生する。前者には「更新があるよ」トークを、後者にはReference0に理由が格納されるのでこれを使って分岐しよう。 none ... 更新なし timeout ... タイムアウト 404 等 ... そのステータスコードでの失敗 里々例 裏でこっそり更新チェックをして、更新がある時だけ喋る例。これに、チェックしたいタイミングで \![updatebymyself,checkonly] をはさもう。 *OnUpdateCheckComplete :(0)更新があるみたいだよ。すぐ更新する? _更新する _更新しない *更新する \![updatebymyself] *更新しない :じゃ、やめとくね。 \![update,platform] 本体ネットワーク更新イベントを開始する。 SSP本体のネットワーク更新? \6 時計合わせイベントで実際に時間修正を行う。 単体では役に立たない。具体的には↓のコマンドを使って、時計合わせイベントを発生させると、サーバに接続が確立された際に自動的にOnSNTPCompareイベントが発生する。このイベント中で使うことで時間修正が完了する。 他のOnSNTP~イベントも併せて参照のこと。 \7 時計合わせイベントを開始する。 \![executesntp] 時計合わせイベントを開始する。 \![execute,headline,ヘッドライン名] ヘッドラインセンスイベントを開始する。ヘッドライン名をrandomにするとランダムに選択。 lastinstalledにすると最後にインストールされたヘッドラインを開始。 \![biff] メールチェックイベントを開始する。 \![vanishbymyself] 消滅指示無しで自ゴーストをアンインストールする。 使いすぎに注意。 \![vanishbymyself,ゴースト名] 消滅後に交代するゴーストを指定して自ゴーストをアンインストールする。 SSP専用。 「ゴースト名」は\0ではなく、まんまゴースト名。ghost\master\descript.txt の name, の項目です。 発動は以下の条件を全て満たしている事が条件。 自分以外の「隣で起動しているゴースト」がいない 指定したゴーストがインストールされている 本体設定の開発オプションでバニッシュ抑制をしていない 一つでも満たしていない場合、通常のアンインストールと同じになる。 \+ ランダムに他のゴーストに切り替わる。 \_+ 次の順番のゴーストに切り替わる。 \![change,ghost,ゴースト名] そのゴーストへの切り替えを行う。 該当ゴーストがいなかった場合は無視される。 ゴースト名をrandomにするとランダムチェンジ。 sequentialの場合はシーケンシャルチェンジ。 lastinstalledで最後にインストールされたゴーストへの切り替えを行う。 lastinstalledはゴーストが新しくインストールされた時(OnInstallCompleteイベントで使う)にも有効。これを使うか、それともインストールイベントのリファレンスを使いゴースト名で呼び出すかは趣味。 \![change,shell,シェル名] そのシェルへの切り替えを行う。 該当シェルがなかった場合は無視される。 lastinstalledで最後にインストールされたシェルへの切り替えを行う。 同上。 \![change,balloon,バルーン名] そのバルーンへの切り替えを行う。 該当バルーンがなかった場合は無視される。 lastinstalledで最後にインストールされたバルーンへの切り替えを行う。 同上。ただしこれを実行すると強制的にOnBalloonChangeイベントが発生する。 従ってこのスクリプトを活用しようとしてもその後のトークが表示されなくなる(OnBalloonChangeイベントに割り込まれる)。インストールイベントや初期バルーンの強制設定などでこのスクリプトを使う場合、フラグ変数などを設定し、OnBalloonChangeイベント上でトークを分岐させよう。 \![call,ghost,ゴースト名] そのゴーストを呼び出す。 ゴースト名をlastinstalledにすると最後にインストールしたゴーストを呼び出し。 連動イベントなどに。やはりインストールイベント後にも使える。 \v 手前に表示する。 このスクリプトが実行された時、ウィンドウの最前面に出てくる。「常に手前に表示」とは関係ない。 \![set,windowstate,stayontop] 手前に表示する。 「常に手前に表示」にチェックが入る(ONになる)。 当然、このコマンドを使ってもウィンドウの最前面に出てくる。 \![set,windowstate,!stayontop] 手前に表示しない。 「常に手前に表示」からチェックが消える(OFFになる)。 これを実行したからといって、すぐに後ろに引っ込むわけではない事に注意。 \![set,windowstate,minimize] 最小化する。 \![set,wallpaper,ファイル名,オプション] 指定したファイルを壁紙にする。 オプションにcenter、tile、stretchを指定できる、省略可。 \![set,tasktrayicon,ファイル名,テキスト] 指定したアイコンファイルをタスクトレイのアイコンに変更する。 テキストはアイコンにマウスを重ねたときの表示、省略可。 \![set,trayballoon,オプション,オプション,オプション...] トレイアイコンからバルーンを表示する。※下記参照。 バルーンをクリックして消した時にOnTrayBalloonClickが発生。 タイムアウトした時や閉じるボタンで閉じた時にOnTrayBalloonTimeoutが発生。 SSP専用。 各種オプションを併用して様々な情報を表示できる。『--text』オプションは、定義した分ごとに改行される。 例/ \![set,trayballoon,--title=疲労度がたまっています,--text=けっこうきついです,--text=そろそろ休ませて下さい,--icon=warning] timeoutオプションはいまいち働いていない様子?単位はmsかsか微妙。 titleやtextはOnTrayBalloonClickのリファレンスとして送られるので、ギミックを仕込みたい時はしっかり定義しよう。 オプション詳細 『--text=テキスト』 バルーンに表示する文字列、複数指定で複数行に。 『--title=タイトル』 バルーンのタイトル。 『--icon=アイコン設定名』 バルーンに表示されるアイコンの設定。 info 情報アイコン error エラーアイコン warning 警告アイコン none なし 『--timeout=秒数』 バルーンの表示時間。 \![raise,イベント名,r0,r1,r2...] イベントを実行する。第3引数以降はreference。 任意のイベントを実行する便利なコマンド。 どう便利かというと、まずタイミング指定ができるところ。 saoriやshiori独自のコマンドはまず「スクリプトが実行される前に全部処理される」。よって、スクリプト中にsaoriの実行コマンドを入れても、まずsaoriが実行されてからスクリプトが実行されてしまう。そこで、raiseで任意にジャンプする事によりタイミングを制御できる。 ただし、里々/整備班verでは、主要なコマンドがスクリプトの順番通り実行される高度なギミックが仕込まれている他、syncコマンドなどsaori用に効果を発揮するものが充実しているので、あまり使う機会はないかも。 \![embed,イベント名,r0,r1,r2...] イベントの実行結果を現在実行中のスクリプトのこのタグ内に「埋め込む」。 使い方は\![raise]と同じ。プロパティシステムの内容によって分岐など、イベントを実行して情報を 取得する仕様を、1回のスクリプト実行で有効に使用するための仕様。 第3引数以降はreference。 \![timerraise,時間,繰り返すか否か,イベント名,r0,r1,r2...] 待ち時間(ミリ秒)を指定してイベントを実行する。 第5引数以降はreference。 このコマンドがきてから「時間」が経過すると、「イベント名」が実行される特殊なraise。 「繰り返すか否か」は 0 で延々とリピート、 1 以上で一回のみ。 時間制限などに使える。 連続で実行した場合、最後に実行したものだけが動作する。 \![raiseother,ゴースト名,イベント名,r0,r1,r2...] 起動している他のゴーストへイベントを通知する。 第4引数以降はreference。 ゴースト名を__SYSTEM_ALL_GHOST__とすると起動している全てのゴーストに通知。 1バイト区切りで複数指定可。 \![timerraiseother,時間,繰り返すか否か,ゴースト名,イベント名,r0,r1,r2...] 待ち時間(ミリ秒)を指定して起動している他のゴーストへイベントを通知する。 第6引数以降はreference。 ゴースト名を__SYSTEM_ALL_GHOST__とすると起動している全てのゴーストに通知。 1バイト区切りで複数指定可。 \![raiseplugin,プラグインのIDまたは名前,イベント名,r0,r1,r2...] プラグインに指定したイベントを送信する。 プラグイン名をrandomにするとランダムに選択。 lastinstalledにすると最後にインストールされたプラグインを開始。 \![notify,イベント名,r0,r1,r2...] Notifyイベントを実行する。第3引数以降はreference。 \![notifyother,ゴースト名,イベント名,r0,r1,r2...] 起動している他のゴーストへNotifyイベントを通知する。 第4引数以降はreference。 ゴースト名を__SYSTEM_ALL_GHOST__とすると起動している全てのゴーストに通知。 1バイト区切りで複数指定可。 \![notifyplugin,プラグインのIDまたは名前,イベント名,r0,r1,r2...] プラグインに指定したNotifyイベントを送信する。 プラグイン名をrandomにするとランダムに選択。 lastinstalledにすると最後にインストールされたプラグインを開始。
https://w.atwiki.jp/bottle/pages/44.html
(この文書は現在編集中) フロントエンドとバックエンドって? フロントエンドは、現在ユーザが作業をしているウィンドウ:一番上のウィンドウ (「アクティブ・ウィンドウ」と呼ぶらしい。。)を指します。 @コマンド関数は全部フロントエンド処理です。 (もしかすると例外あり?@関数は詳しくないので抜けがあるかも。) あとスクリプトでもUIという言葉がつくクラスは全部フロントエンド処理です。 (UIってUser Interfaceの略なのか??) スクリプトの関数でもダイアログ表示用の関数はフロントエンド処理です。 バックエンドは、フロントエンドの反対で、表示している状態以外の処理を指します。 つまりバックエンドを簡単にいうと、表示してないメモリ上の処理。(って余計わかりづらいか?) フロントエンド以外の処理っと覚えてください。(めちゃアバウトな説明zzz) @コマンド以外の@関数は基本的にバックエンド処理です。 スクリプトならUIという言葉がつかないクラスは全部バックエンド処理です。 簡単に踏まえると以上な感じ。 @関数だけの処理なら、あまりフロントエンドとバックエンドを意識する必要はありませんが、 Lotus Scriptを使用するとなると、ここを踏まえないととんでもないエラー連発。 というか、思ってない動作をすること間違いなし。 特にサーバ・エージェント(スケジュール型の自動エージェント)をLotusScriptで組むときの注意として、 フロントエンドを一切使用できません。フロントエンドを使うとエラーします。 たとえば、フロントエンド側で処理したデータとバックエンド側で処理したデータを 1つに合体(???ここの言い回し、微妙だ。。。)させたい場合には、 処理の順番を間違うと、バックエンド側しか文書に反映してないとか、 バックエンド側の処理を反映できなかったとか、色々不具合がでます。 (自分もここの理解ができるまでかなり時間かかりましたしzzz) 複雑ですが、ノーツアプリケーションとして作る ワークフロー作成の一例を以下に示します。 (あくまでも一例なので、ちょっと複雑なのを例にもってきましたが、 ワークフロー自体はもっと簡単に作成できるはずです。) ①誰かが文書を必要事項を入力 ②ワークフロー申請を開始(アクション・ボタン押下) ③入力チェック判定 ④入力チェックがエラーしたら再入力してもらって再度②にもどる ⑤入力チェックが問題なければ、ワークフロー設定用画面表示 ⑥ワークフローの承認者(あて先)設定 ⑦メール送信 ⑧フラグ制御 を行う場合、 ①はフロントエンド処理。 ②はフロントエンド⇒バックエンドへ ③はバックエンド ④と⑤はバックエンド⇒フロントエンドへ ⑥はフロントエンド ⑦はバックエンド ⑧はバックエンドとフロントエンドの両方 という感じになります。 うん、ちょっとややこしいですね。 特に⑤から⑥なんかは、バックエンド処理の最中に承認者設定用のフォームを呼び出し フロンドエンドで承認者という値を設定(入力選択)するようにしています。 バックエンド側で値を変更しているのに、 フロントエンド側でも値を設定できるのかと心配になるところですが、 バックエンドとフロントエンドは平行的 (というか、パラレルって言うのか?実際の並行処理とは違うけどzz)に 処理が可能のため、問題なく処理ができます。 他にも、④のところで、入力チェックで入力がたりない項目があった場合、 バックエンド側からエラー表示を行い、 再度編集してもらうという行為も スクリプト初心者には悩むところだと思います。 簡単にやっちゃう場合には、エラーしたら現在の状態で一度セーブをかけ 文書を強制的に閉じてしまえばいいんですが 入力エラーの場合はすぐ編集したいのがユーザ側の要望でしてzz さんぷる1。 Sub Click(Source As Button) Dim wksp As New NotesUIWorkspace Dim uidoc As NotesUIDocument Dim doc As NotesDocument Dim session As New NotesSession Dim newdoc As NotesDocument Dim intType As Integer, yesno As Integer, nextStatus As Integer Set uidoc = wksp.CurrentDocument Call uidoc.save Set doc = uidoc.Document 入力チェック処理 If Input_Chk(doc) = False Then Exit Sub End If ここで「いいえ」が選択された場合はPG停止 If Messagebox("承認を開始します。承認ルーチンの確認を行ってください。", 68, "確認") = 7 Then Exit Sub End If 承認ルーチン設定用表示フラグ設定 If doc.FormTitle(0) = "企画書" And doc.ProductType(0) = "一般" Then intType = 1 承認ルーチンパターン1 Else If doc.RDRank(0) = "S" Then intType = 3 承認ルーチンパターン3 Else intType = 2 承認ルーチンパターン2 End If End If 以前に却下された場合は、承認情報を消す Dim n As Integer If doc.Status(0) = "90" Then For n = 2 To 8 Set item = doc.ReplaceItemValue( "approval_" + Cstr(n) , "" ) Set item = doc.ReplaceItemValue( "rej_" + Cstr(n) , "" ) Set item = doc.ReplaceItemValue( "shouninDate_" + Cstr(n) , "" ) Next End If ここで承認ルーチン設定ダイアログ表示 yesno = WKFLSetUp(doc, intType) If yesno = False Then Exit Sub End If メール送信処理 nextStatus = MailSendSetup(doc ,intType) 承認・却下ボタン制御用、次の承認者をセット If doc.Roma_syounin_2(0) = "" Then doc.Roma_syounin = doc.Roma_syounin_3 doc.Roma_dairi = doc.Roma_dairi_3 Else doc.Roma_syounin = doc.Roma_syounin_2 doc.Roma_dairi = doc.Roma_dairi_2 End If doc.shouninDate_1 = Today 承認日セット doc.Status = Cstr(nextStatus) Call doc.save(True,True) 一度保存を掛ける Call uidoc.save Call uidoc.close End Sub
https://w.atwiki.jp/sakurascript/pages/13.html
使用頻度の高そうな汎用さくらスクリプト。 イベントコマンド(一部)、スコープコマンド、バルーン・テキストコマンド、ウェイトコマンド、選択肢コマンド イベントコマンド(一部) \e \- スコープコマンド \0 もしくは \h \1 もしくは \u \p[ID番号] サーフィスコマンド(基本) \sID番号 \s[ID番号] \i[ID番号] バルーン・テキストコマンド \b[ID番号] \_b[ファイル名,x,y] \_b[ファイル名,inline] \_b[ファイル名,inline,オプション名,オプション名...] 補足 \n \n[half] \n[パーセント] \_n \c \c[char,数値] \c[line,数値] \_l[x,y] \C \![*] ウエイトコマンド \w時間 \_w[時間] \__w[時間] \x \x[noclear] \t \_q \![quicksession,true] \![quicksession,false] \_s \_s[ID1,ID2,ID3...] 選択肢コマンド \q[タイトル,ID] \q[タイトル,OnID,r0,r1,...] \q[タイトル,ID1,ID2,ID3...] \q[タイトル,script 実行内容] \q[ID][タイトル] \z \__q[ID,...] \* \![set,choicetimeout,時間] \_a[ID] イベントコマンド(一部) ここに載っているもの以外はさくらスクリプト/イベントへ。 \e イベント、メッセージの終了する。 その後に書かれたイベント、メッセージは発生しない。 そのスクリプトの終わりを示す。 里々を使っていると気にしなくなるが、一応は必須スクリプトである事を覚えておこう。 \eの後に書かれたものは実行されない。しかしスクリプトとしては渡されるので、ゴースト間コミュニケーションや切替反応とかで利用できなくもない。 文の最後尾につける必須のさくらスクリプト。しかし、 里々は自動的につけてくれるので意図的でない限り使う必要はない。 里々以外でもSSPなら自動的に処理してくれるっぽい(たぶん)。 \- 本体を終了する。 このさくらスクリプトが実行された瞬間にゴーストが終了。 終了イベントを発生させるコマンドではないです。 里々以外の栞の場合、OnCloseイベント後には必ず付与しましょう。そうでないと終了してくれません。 ちなみにSSPだと「周りに誰もいないとき」、つまり一体でのみ起動している時に限り、\-コマンドがなくても終了します。 スコープコマンド \0 もしくは \h 本体側のスコープに移る。 \1 もしくは \u 相方側のスコープに移る。 \p[ID番号] ID番号のスコープを表示する。 三人目以降を表示させる時に使う。 \p[0]は\0、\p[1]は\1と同じ。\p[2]からは\2じゃないので気を付けろ! 里々で使う時、自動でスコープを変えてくれる「:」が問題。これの法則を掴まないと失敗しやすいので、三人目以降を使うトークだけ「:」を使わないようにすると分かりやすい。 サーフィスコマンド(基本) ここに載っているもの以外はさくらスクリプト/サーフィスへ。 \sID番号 現スコープ側のサーフィスをID番号のサーフィスに変更する。0~9のみ使用可能。 旧仕様っぽいので使用は非推奨。 旧仕様との事で、\p[2]などの三人目のキャラには使えない様子。 \s[ID番号] 現スコープ側のサーフィスをID番号のサーフィスに変更する。 \s[-1]で非表示サーフィス。 サーフィス(立ち絵)を変える。(shellフォルダのsurfaces.txtに特殊な記述がなければ)ふつうはsurface0.pngが\s[0]、surface99が\s[99]と、そのまま数字が入る。\s[-1]で一時的に非表示(透明)になる。 里々の場合は(0)で\s[0]と同じ。(-1)で\s[-1]と同じ。 \s[-1]の非表示状態で喋らせた場合、バルーン位置は\s[-1]の実行される直前のサーフィスの場所になる。ずれたりしないので使い勝手が良い。 逆に、起動直後など「直前のサーフィス」がない時はバルーン位置がずれることもある。サーフィスと同じ大きさの透明サーフィスを用意するのも手。 \i[ID番号] 現スコープ側にID番号のサーフィスアニメーションを表示する。 surfaces.txtで設定したアニメーションパターンを実行。 アニメーション関連の詳しいスクリプトはさくらスクリプト/サーフィスへ。 バルーン・テキストコマンド ここに載っているもの以外はさくらスクリプト/基本非汎用へ。 \b[ID番号] 現スコープ側のバルーンをID番号のバルーンに変更する。 \b[-1]でバルーンを非表示。 バルーン変更コマンド。それまで表示されていたトークなどは消えない。 バルーンは一種類ごとに右向き時と左向き時の2ずつセットになっているので、数字は\b[0]、\b[2]、\b[4]、、、と全て偶数で指定する。 \b[-1]によるバルーンの消去は、キャラクターが席を外すなどを表現する時に。この場合 \c との併用を推奨( \1\c\b[-1] 等)。\cし忘れると同スコープで再度トークをした時に非表示前のセリフが一瞬見える。 \_b[ファイル名,x,y] 画像をバルーンのXY座標に貼り付ける。 ※SSPのみ画像URLを指定可能。 ※ファイル名の代わりにbase64エンコードやexe/dllのリソースを画像として指定可能、下記参照。 \_b[ファイル名,x,y,opaque] と記述すると左上の色を透過しないで表示する。 逆にこれをつけない場合、シェルと同じく自動的に画像の左上1pxの色が透過される。 バルーン内の画像貼り付けの基本。 座標の位置調整がやや面倒なのが難点だが、周りの状態に左右されない。 座標の開始位置(0,0)は「バルーン画像の最も左上」なことに注意。 \_l[0,0] は「バルーン側で設定された文字表示開始位置」なので別物。 バルーン画像の0,0からなので、バルーンの形状が同じなら、スクリプトの最初で背景画像を貼り付けることで擬似的に独自バルーンっぽくできる。 \_b[ファイル名,inline] バルーンのテキスト行内に1文字分扱いとして画像を貼り付ける。 ※ファイル名の代わりにbase64エンコードやexe/dllのリソースを画像として指定可能、下記参照。 \_b[ファイル名,inline,opaque] と記述すると左上の色を透過しないで表示する。 逆にこれをつけない場合、シェルと同じく自動的に画像の左上1pxの色が透過される。 SSP専用。こちらは文章と同じ感覚でバルーン内に画像を表示できる。 いわゆる外字の感覚で画像を文字の代わりに使ったり、選択肢横につけるアイコンに使ったりと便利。 \_b[ファイル名,inline,オプション名,オプション名...] ※ファイル名の代わりにbase64エンコードやexe/dllのリソースを画像として指定可能、下記参照。 ※オプション名 『--option=opaque』 バルーンのテキスト行内に1文字分扱いとして画像を貼り付ける。 左上の色を透過しないで表示する。 『--option=use_self_alpha』 アルファチャンネル付きのPNGを透過して表示する。 『--clipping=左 上 右 下』 左上右下の順に指定した数値の座標で画像を切り取ってバルーンに貼り付ける。 クリッピングオプションを活用すると、画像ファイルを一つにまとめる事も可能。使い方としてはクリッピング座標を指定した\_bを、単語に突っ込んでおくのが一般的。 メーターやエネルギーゲージみたいなのを表現するのにも使える(100*数値/最大値で算出した座標軸で必要な係数・数値分クリッピングする)。 補足 ※SSPのみ可、ファイル名等のパスには環境変数も使える。 base64を使用する場合 例 "data image/png;base64,iV~II" exe/dllのリソースを使用する場合 例 D \hogehoge.exe,20 exe/dllのリソースを使用する場合(リソースID指定) 例 D \hogehoge.exe,-10 \n バルーン内の文字を改行。 \n[half] 通常の半分の高さで改行。 表示の高さ調整に。空行が一行分では多過ぎる、等。 \n[パーセント] 通常のパーセント分改行する。 使うときには%記号は不要。 \n[100] で \n と同じ。 \n[50] で \n[half] と同じ。 \_n 次の\_nがくるまで自動改行されない。 \c 現スコープ側のバルーン内の文字をクリア。 バルーン内の文字や貼り付けた画像を全て消し、かつカーソル位置がバルーンの初期位置まで戻る。 バルーン自体は消えない。 \c[char,数値] 現スコープ側のカーソル位置から指定文字数をクリア。 \c[char,数値,開始位置] で現スコープ側の指定位置から指定文字数をクリア。 バルーン内の演出に。 活用して文字によるアニメーションが可能。 例/ あ\f[height,20]あ\c[char,1]\f[height,16]あ\c[char,1]\f[height,12]あ\c[char,1]\f[height,8]あ \c[line,数値] 現スコープ側のカーソル位置から指定行数をクリア。 \c[line,数値,開始位置] で現スコープ側の指定位置から指定行数をクリア。 \_l[x,y] 現スコープ側のカーソル位置をXYの座標に移動する。 \_l[xem,yem] で現スコープ側のカーソル位置をem単位でXY座標に移動する。 \_l[@x,@y] で現スコープ側のカーソル位置をXY相対座標に移動する。em単位でも可。 単位はドット。 \_l[0,0]にすると、バルーンで設定された初期位置、つまり\cでクリアした時と同じ位置に移動する。画像の0,0座標ではないので注意。 \C 先頭に記述すると直前に表示したバルーンのテキストに追記をする。 普通は1トーク(開始~\e)単位で内容が消えるところを追記する。 トーク後(またはトーク中)に別のイベントが発生した時などに、自動的にバルーンがクリアされてしまうのを防ぎたい時、後発イベントにこのタグを仕込むと、バルーンの内容をそのまま残して追記続行できる。 時間経過でバルーンが消えた場合でも、\Cがくると直前の内容ごと復帰する。 「追記」なので、前のイベントを中断して介入することはできない事に注意。直前のトークを全て表示してから続きます。 文の最初に記述しなければ無視されるので、里々では要注意。 $スクリプトの一番頭【タブ】\C のように使う。 \![*] マーカーを表示する。 よく色々な選択肢の横についてるアイコン画像みたいなアレを表示する。 バルーン作成者がそれぞれ用意した画像なので、ゴースト側で画像を用意するより背景との整合性が取れているはず。 里々でこれを選択肢の横につける場合、『_』は使用不可。\qタグを使おう。 例/ _何か話して → \![*]\q[何か話して,何か話して] ウエイトコマンド \w時間 時間x50ms分の時間ウエイト。 \w1~\w9。 \_w[時間] 精密ウエイト。[時間]ms。 \_w[500]のように使う。演出に便利。単位は1000ms=1秒。 \__w[時間] 再生開始、または\xから指定ミリ秒数が経つまで待機。 \__w[clear]で時間リセット。 \x バルーンをクリック待ちにする。 バルーンをクリックするまで先に進まない。長い文章や説明なんかで便利。 \tと併用していない場合、触り反応などはきちんと発生する。 バルーンをクリックすると、自動的に内容がクリア(\cとほぼ同じ)される。クリアされたくない場合は↓を。 \x = \x[noclear]\c だと思えば分かりやすい。 \x[noclear] バルーンを一時クリック待ちにする。 クリアが発生しないクリック待ち。そのまま継続して進められるので、場合によっては通常の\xより使いやすい場面もある。 \t タイムクリティカルセッション。 \eまでの間、クリックや他のイベントなどを行わない。 これを使ったトーク中は、ランダムトークや触り反応が発生しなくなる。 パッシブモードと違い終了は可(ただし即時終了になる)。 初回起動など、「キャンセルされては困るトーク」で特に有効。 物語系の導入では、\*と併用して「絶対に選択しなければならない選択肢」としても使える。 \_q クイックセッション。 次の\_qか\eまでメッセージがノーウエイトで表示される。 \_q~\_q ゴーストのメニューや設定モードなんかで使うと効果的。 クイックセクション中でもウェイトコマンドがきちんと動作する。これを利用して一行ずつ瞬間表示にする、といった事も可能。 \![quicksession,true] クイックセッションを開始する。 \_qと違い、ひとたびこれを実行すればゴーストが終了するまで常にクイックセッション。 \_qの開始限定版。文中に\_qを使いすぎて、どこでon/offしたか分からなくなった時とかに。 \![quicksession,false] クイックセッションを終了する。 ↑を解除する。 \_qの解除限定版。文中に\_qを使いすぎて、どこでon/offしたか分からなくなった時とかに。 \_s シンクロナイズセッション。 次の\_sか\eまでメッセージを両バルーンに表示する。 \0と\1のみ。 \_s[ID1,ID2,ID3...] IDのスコープをシンクロナイズセッションする。 普通の\_sと同じく、効力は次の\_sか\eまで。こちらは三人目以降にも適応できる。 使用例/ \_s[0,2]ダウト!\_s ←これで\0と\p[2]が同時に喋る 選択肢コマンド \q[タイトル,ID] 選択肢を表示。 選択後、SHIORIイベントOnChoiceSelectが開始される。IDはReference0に格納される。 里々を使う場合でも、この書き方に慣れておくと後々便利。 \q[クリックできる文章,ジャンプ先の*] と覚えておくといいかも? \q[ほーむぺーじ,http //...]でクリックすると指定したページに飛ぶようにできる。 但しこれらを変数に格納している場合はエスケープシーケンスの関係でうまくいかない場合がある(YAYA)。たとえば"\q[%(PAGE),%(URL)]"などでは上手く動作しない。この場合は後述の\__qタグを使って"\__q[%(URL)]%(PAGE)\__q"だとうまく動作する。 \q[タイトル,OnID,r0,r1,...] 選択肢を表示。 上記のようにIDが"On"で始まっている場合は、選択後、SHIORIイベントOnID(つまりOn...という名前の関数) が実行される。 それ以降のパラメータはr0,r1,...の順番にReference0以降に格納される。 意図的に自分の好きな名前で定義したOnなんちゃらイベントを発生させられる。OnChoiceSelectの一括処理では分岐がキツくなってきた時などに。勿論あらかじめ処理するイベント名を分けておくにも有効。 \q[タイトル,ID1,ID2,ID3...] 選択肢を表示。選択後、SHIORIイベントOnChoiceSelectが開始される。 ID*はReference*に格納される。 CROW専用。 \q[タイトル,script 実行内容] 選択肢を表示。選択後、script 以下の内容をSakuraScriptとして実行する。 \q[ID][タイトル] 選択肢を表示。[旧仕様] 選択後、ID番号のSHIORIイベントが開始される。 上記のものとは違い選択肢は改行される。 \z 上記選択肢の範囲終了に付ける。[旧仕様] \__q[ID,...] \__qがくるまでの範囲を選択肢とする。 ID以降の仕様は、Onやscript で始まるものが特別扱いされるのも含めて\qと同じ。 Onで始まるIDを指定した場合のみ、ID以降のパラメータがそれぞれreferenceとして扱われる。 Onで始まるIDを指定しなくてもreferenceは通知される。referenceはr2以降から。 アンダーバーが 2つ なので注意。SSP専用。 \__q[]~\__q で括った全てが選択肢(タイトル)になる。 特筆すべきはこのタグの効力は画像などにも適応されるという事。つまり、 \__q[ランダムトーク]\_b[talkicon.png,inline]\__q とすると、画像を選択肢としてクリックできるようになる。バルーン内の装飾のほか、ミニゲームにも有用。また、さらに\_l[x,y]と併用すると非常識な選択肢グルーピングが可能。お験しあれ。 追加情報をリファレンスに格納利用する場合、OnChoiceSelectではなくOnChoiceSelectExイベントを使うので注意。 ふつうの\qタグと違い、選択肢は瞬間表示にならない。わりと気になるので\_qのクイックセッションで挟んでおきたいところ。 \* このコマンドの後の選択肢はタイムアウトされない。 元は消滅予定の仕様だった。今も現存現役。 ゴーストの設定メニューなどを表示している時に活躍。表示している情報量が多い場合、少なくともこれかタイムアウト時間を設定するかどちらかは設定しておきたい。 タイムアウトはされないが、これ単体ではつつき等の他のイベントは発生する。初回起動などで「邪魔されない選択肢」にしたい場合は\tと併用すべし。 逆に設定やメニューなど、「日常的に開くトーク」と\*\tの併用は非推奨。ユーザービリティを損ねやすい。 \![set,choicetimeout,時間] タイムアウトを時間指定する。 \_a[ID] \_aがくるまでの範囲をジャンパとする。 ジャンパをクリックするとSHIORIイベントOnAnchorSelectが開始される。 IDはReference0に格納される。 SSPのみ、IDでURLジャンプが可能+Onで始まるIDを特別扱いする処理が含まれる。