開始時間・終了時間の文字列を選択して合計時間を出すUserScriptを作りたい
ここでUserScriptの依頼って可能ですか?
作りたいスクリプトはあるけど、よくわからない
これから仕事なので、夕方にまた…。
がんばえ~~
仕事のタスクメモとして、
201020納期 // #〇〇工業 / Mail / 完成品 #201009受注
10/09 13:00~16:00 3H
までを自作のUserScriptで作ってあって、下段の時間のところを(3Hの部分)、13:00~16:00を選択してメニューを選ぶだけで計算してほしい!
断片だけ
code:fragment1.js
const format = text => {
const begin, end = text.replace(/(\d+:\d+)^\d*(\d+:\d+)/,'$1,$2')
.split(',')
.map(time => {
const hour, minute = time.split(':');
return parseInt(hour)*60+parseInt(minute);
});
const duration = end -begin;
const minutes = duration % 60;
const hours = Math.floor(duration / 60);
return minutes !== 0 ? ${hours}H${minutes}M : ${hours}H;
};
やっつけで作った
developer toolのconsoleに貼り付ければテストできます
あとはformatをいい感じにrefactoringして該当のUserScriptに組み込めばおk
Popup menuならscrapbox.PopupMenu.addButtonを使ったり
実行例
code:fragment1-test.js
const format = text => {
const begin, end = text.replace(/(\d+:\d+)^\d*(\d+:\d+)/,'$1,$2')
.split(',')
.map(time => {
const hour, minute = time.split(':');
return parseInt(hour)*60+parseInt(minute);
});
const duration = end -begin;
const minutes = duration % 60;
const hours = Math.floor(duration / 60);
return minutes !== 0 ? ${hours}H${minutes}M : ${hours}H;
};
console.log(format('10:00〜12:00'));
// → 2H
console.log(format('13:00〜16:00'));
// → 3H
console.log(format('16:00〜15:00'));
// → -1H
console.log(format('12:40〜14:45'));
// → 2H5M
おー!ありがとうございます
なにがどうなのかわかりませんが、なんか違う…。
ごめんなさい、全くどうしたらいいかわかりません
おそらく私がテストのやり方を間違えているのかな?と思います
developer toolに貼り付けるとこんな感じです
https://gyazo.com/10fbdcedb852733a4c4522afeda287f7
修正しました。開始時間・終了時間の文字列を選択して合計時間を出すUserScriptを作りたい#5f80f9021280f00000114de4をconsoleにコピペして下さい
どのような方法でテストしたのか書いていただけるとわかるかもですtakker.icon
自分の個人project内にformat('13:30~16:30)と書いて、上記のスクリプトをコンソールに貼り付けました。
それは動きません。変数(函数)の宣言順序と、scriptのscopeを考えてみて下さい
https://gyazo.com/f1d45ba9e83ad680a9bd8bf883af616a
こうなりました
あ、違うところがある、なるほど、そうするのか……やってみよう
だめですね、見た目同じですがシンタックスエラーが出ますね
デベロッパーツール、難しいですねぇ。普段触りませんし…というかWebツール作りたくて参考書買いましたが意味わかんなくて…。いま出先なので帰ったらまた試します。
developer toolが難しかったら、UserScriptに直打ちでも問題ないです。
単にdeveloper toolが一番簡単そうに思えたので使っただけです。javascriptを動かせる環境であればどこでもtestできます
昼から妻がPCを使うようなので、今Fire tab8にjavascriptのアプリ入れて試したらできました。が、時間表記はされますが、分表記が出なくてどうするのかなぁ?と頭を抱えてしまいました
作ってもらったのにテストできずすいません
これ、Math.floor()(端数切捨て)を使っているけど、これでいいの?suto3.icon
console.log(format('12:40〜14:39'));だと、1Hが返ってくるけど
出来れば、1H15Mみたいな表記が欲しいですねぇ
Mまで欲しかったのですか。それは気づきませんでしたtakker.icon
開始時間・終了時間の文字列を選択して合計時間を出すUserScriptを作りたい#5f7ffe5486501c0000a6453cには3Hとだけ合ったので、てっきりMは切り捨てるものかと……
すみません、説明不足で
修正しました。takker.icon
長々とありがとうございました。あとはチョコチョコイジってみたいと思います。
ういです。ぜひぜひいじってみてくださいtakker.icon
どんなスクリプト?実装方法がわからない?
作りたいtakker.icon*3
どういうことしたいか文章or Drawingで書いていただければ
本当に作れるかどうかはわからない
そもそも情報系の人間じゃないし
え?そうなの?
takker#5f7690c01280f00000791d21
実現したいことがうまく書けなくても、書いてみよう
また新しいUserScriptをお願いしたいと企んでいます。まだ準備が出来てないので後日になります。
初めて、ページリスト上のタイトルが書き換わる光景を観たdnin.icon
みたかったなーtakker.icon
なんかこう、パタパタが
反転フラップ式案内表示機が動いているのを観た感じに近い?
空港 時刻表示 パタパタで出てきた
Scrapbox Drinkup中にshokaiさんのプロジェクトとかDrinkupのプロジェクト見るとものすごい速さで更新されて面白いですよ
/takker/tritask-scrapboxの技術を転用すれば、もっと楽にやれそう
UserScript.icon