質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.50%
CSS3

CSS(Cascading Style Sheet)の第3版です。CSS3と略されることが多いです。色やデザインを柔軟に変更することが可能になります。

HTML5

HTML5 (Hyper Text Markup Language、バージョン 5)は、マークアップ言語であるHTMLの第5版です。

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

Q&A

解決済

3回答

7581閲覧

Google Chrome Extensionで定時実行

MasakazuFukami

総合スコア1869

CSS3

CSS(Cascading Style Sheet)の第3版です。CSS3と略されることが多いです。色やデザインを柔軟に変更することが可能になります。

HTML5

HTML5 (Hyper Text Markup Language、バージョン 5)は、マークアップ言語であるHTMLの第5版です。

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

0グッド

1クリップ

投稿2017/04/11 02:52

Google Chromeの拡張機能を作っています。

個人の趣味で作っているのですが、毎時丁度(8時,9時,10時...)に1時間作業してるけど大丈夫?的な通知を出したいのですが、Google Chrome Extensionの中にcron的な処理ってあるのでしょうか??

backroundのscriptの中で1時間単位のsetIntervalをやるとかも考えたのですが、かなり気持ち悪いなぁと思っていて。。。

もしAPIをご存じの方がいらっしゃったらご教示いただけると幸いです。

現状は以下のようにscriptを作っています。

javascript

1var nId = null; 2 3var opt = { 4 type: 'basic', 5 title: '1時間経ったよ!', 6 message: '休憩しなくて大丈夫?', 7 iconUrl: './128.png', 8 buttons: [ 9 { 10 title: "youtubeを見る" 11 }, 12 { 13 title: 'まだ頑張る!' 14 } 15 ] 16} 17 18const showNotification = () => { 19 chrome.notifications.create('aaaaa', opt, (id) => { 20 nId = id; 21 }) 22} 23 24const closeNotification = (id) => { 25 chrome.notifications.clear(id) 26} 27 28chrome.notifications.onButtonClicked.addListener((id, btnIndex) => { 29 if(nId === id){ 30 if(btnIndex === 0){ 31 window.open('https://youtube.com') 32 }else{ 33 34 } 35 closeNotification(nId) 36 } 37}) 38 39showNotification() 40

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答3

0

chrome.alarmsを使用する方法はどうでしょう。
1分単位でしか設定できませんが、用途は1時間ごとなので十分かと思います。
これを使えば一定時間ごとにイベントを発生させることができます。
使用する際には、manifest.jsonのpermissionsに"alarms"を追加してください。

javascript

1// 初回イベントを60分後(delayInMinutes), 以降60分ごとにイベントを発生させる(periodInMinutes) 2chrome.alarms.create('hoge', { delayInMinutes: 60, periodInMinutes: 60 }); 3chrome.alarms.onAlarm.addListener(alarm => { 4 if (alarm.name === 'hoge') { 5 showNotification(); 6 } 7});

投稿2017/04/11 04:49

turbgraphics200

総合スコア4267

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

ベストアンサー

alarmsというAPIがあります

chrome.alarms
https://developer.chrome.com/extensions/alarms

使い方の参考
Chrome拡張機能APIのEvent Pagesで一定時間おきになにか実行させる
http://kenzauros.com/blog/run-something-periodically-with-event-pages-of-chrome-extension-api/

ちなみに

「毎時丁度(8時,9時,10時...)に1時間作業してるけど大丈夫?」
という処理は、
「毎時丁度(XX時00分)の時間に作業を始めたとき」
という前提になってしまいますね

毎時丁度(いわゆる「毎正時」)を通知するのか(今10時です!)
作業開始からの経過時間を通知するのか(開始から1時間です!)
によって処理が変わりますね

投稿2017/04/11 04:44

takito

総合スコア3111

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

MasakazuFukami

2017/04/11 04:45

takitoさん ありがとうございます!!! API見てみます!!!
guest

0

指定時間にコールバックするJavaScriptのライブラリはいくつもありますが、
内部的にはsetIntervalでぶん回しているだけだと思います。
setIntervalでもよいのでは?

投稿2017/04/11 04:34

Clor

総合スコア883

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.50%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問