
GoogleスプレッドシートでTODOリストを作成しています。
たとえばタスクの期限が近づいてきた時に(3時間前など)に指定したメールアドレスにメールを
送る(ハングアウトで通知されるとか、ユーザーに直接連絡が行けばなんでも構いません)
ようなスクリプトや、条件付き書式設定など?
方法はございますでしょうか?
スプレッドシートだけでなくても、GoogleカレンダーやIFTTTなどといった他のサービスとの複合でもアイデアがあればぜひご教授頂きたく存じます。
No.2ベストアンサー
- 回答日時:
独学がてら原理動作を作ってみました。
(添付画像、後記スクリプト)太字の日時を現在日時の3時間前後に設定し、「期限チェック」ボタンを押すと、期限まで3時間以内なら添付画像のように「警告」表示されメールが送信されました。
注意点は、期限の表示形式を本来の日付や日時にすると判定ができなかったため書式なしテキストとしました。
スプレッドシートを開いたイベントに処理を割り当てるという仕組みは見つけられませんでした。
周期処理も同様のため、自動ではなく上記のようにボタンを押すという手動の実装を行いました。
当然開きっぱなしでは実行されないことになります。
メールについては、下記も参考になります。
https://developers.google.com/apps-script/overvi …
セルの読みは下記が参考になります。
https://developers.google.com/apps-script/guides …
GoogleスクリプトはベースはJavascriptのようなので、Javascriptの仕様も参考になると思います。
あとは、上記等、勉強して補って下さい。
Googleの捨てアカウントがあるなら、原理動作したものを編集者権限(動作させることができる)で共有できます。
ちなみにここまで作って気づきましたが、Googleカレンダーの予定にメールの通知機能があります。
ただ、通知は最短で1日前です。
でも、ポップアップによる通知も設定できるため、もしかしたらこちらは開きっぱで通知されるかもしれません。
とはいえ、1日前にポップアップされてもですが。。。
-----スクリプト
function CheckExpiration() {
var sheet = SpreadsheetApp.getActiveSheet();
var data = sheet.getDataRange().getValues();
expire = new Date(data[1][1]);
now = new Date();
timeExpire = expire.getTime();
timeNow = now.getTime();
judge = sheet.getRange("C2");
judge.setValue("");
if (timeExpire - timeNow <= 1000 * 60 * 60 * 3)
{
judge.setValue("警告")
Notify();
}
}
function Notify()
{
// Create a new Google Doc named 'Hello, world!'
var doc = DocumentApp.create('Hello, world!');
// Access the body of the document, then add a paragraph.
doc.getBody().appendParagraph('This document was created by Google Apps Script.');
// Get the URL of the document.
var url = doc.getUrl();
// Get the email address of the active user - that's you.
var email = Session.getActiveUser().getEmail();
// Get the name of the document to use as an email subject line.
var subject = doc.getName();
// Append a new string to the "url" variable to use as an email body.
var body = 'Link to your doc: ' + url;
// Send yourself an email with a link to the document.
// GmailApp.sendEmail(email, subject, body);
Logger.log("Send Email");
}

No.1
- 回答日時:
ググったレベルだけど。
。。こんなAPIがあるので、スプレッドシートのメニュー「ツール」-「スクリプトエディタ」からスクリプトを作り、スプレッドシートにアドオンすれば、ExceL+VBAのようにできるのではなかろうか。
https://developers.google.com/apps-script/refere …
Javascriptだとグローバルに書いた処理はロード時に実行されるので、同様なら、シートを開くだけでTODOリストの期限をチェックしてメール送信まで自動でできそう。
(Googleのスクリプトはスプレッドシートだけのものではないから厳しいかもしれない。。。
逆に、読み込み時というイベントに応じて処理を行う仕組みが用意されているかも。)
とはいえ、やり過ぎならVBA同様、メニュー「挿入」-「画像」で□を書いてスクリプトを割り当て、期限チェックボタンとする等。
気になるとこでは、
・メール送信はおそらく送信元はスプレッドシードの所有者のグーグルアカウント???
・メール送信失敗は、APIの戻りが同オブジェクトなので、前後で受信トレイのスレッド数を比較???
(失敗ならエラーメールが受信される。)
ご回答誠にありがとうございます。
とても丁寧に教えていただいて上で恐縮なのですが、当方はプログラミングに関する知識が、皆無に等しいのです。
お手間をおかけついでにいくつかお尋ねしたいのですが、
●こちらのAPIはスクリプトエディタを開いてそのままコピペすればよろしいのでしょうか?
●もしそうだとすれば、どこからどの範囲をコピペして、どの範囲を各個人のメールアドレスに書き換えればよいですか?
もし、これがシートをひらくだけで実行されるなら、ほぼやりたいことが実現できるのですが、「スプレッドシートをひらく」というアクションが無ければ実行されないのでしょうか?
だとすれば、開きっぱなしの場合はTODOの期限が経過しても実行されない可能性はありますでしょうか?
お手すきの折がございましたら、ご返答いただければ幸いです。
どうもありがとうございます。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
gimp2.8 script-fu について
-
PDFファイルを分割するマクロの...
-
PDFで年齢を計算したいのです。
-
【このスクリプトの実行を中止...
-
デジタル時計の時刻合わせの方...
-
マイページはどこを開くの
-
エクセルのシート上に別のシー...
-
エクセルVBAでフォームのListbo...
-
Excelでワードアートや図を常に...
-
TikTokLiteの自動スクロールの...
-
リトルバスターズEXを中古で購...
-
デスクトップ画面を4分割するには
-
javascriptで開いたウィンドウ...
-
「Cancel = True」とはどういう...
-
Outlookのエラー表示について
-
ウインドウを毎回同じ位置、大...
-
vb,netでtextboxの文字を右から...
-
一定時間おきにアラームやポッ...
-
VBAで任意のウインドウのサイズ...
-
Access VBA でForm位置を参照す...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
スクリプトって、何ですか?ど...
-
PDFファイルを分割するマクロの...
-
Firefoxの拡張NoScriptの使い方...
-
【このスクリプトの実行を中止...
-
バッチファイルでdiskpart.exe...
-
質問なんですけど……
-
このスクリプトの実行を中止し...
-
VISTA HOMEEDITIONのIIS7.0でAS...
-
情報バーについて
-
PDFで年齢を計算したいのです。
-
エクセルVBAでIEのjavaスクリプ...
-
FlashLiteで半円のアナログ時計...
-
スクリプトファイルについて
-
ホームページのデバッグの修正...
-
Flexible Renamer にてランダム...
-
スクリプトの埋め込み
-
Windows Server 2003
-
ホームページビルダー8で
-
apache2.2.6 日本語設定
-
Googleスプレッドシートで特定...
おすすめ情報