アプリ版:「スタンプのみでお礼する」機能のリリースについて

GoogleスプレッドシートでTODOリストを作成しています。

たとえばタスクの期限が近づいてきた時に(3時間前など)に指定したメールアドレスにメールを
送る(ハングアウトで通知されるとか、ユーザーに直接連絡が行けばなんでも構いません)
ようなスクリプトや、条件付き書式設定など?

方法はございますでしょうか?

スプレッドシートだけでなくても、GoogleカレンダーやIFTTTなどといった他のサービスとの複合でもアイデアがあればぜひご教授頂きたく存じます。

A 回答 (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");
}
「Googleスプレッドシートで特定のセル」の回答画像2
    • good
    • 0

ググったレベルだけど。

。。

こんなAPIがあるので、スプレッドシートのメニュー「ツール」-「スクリプトエディタ」からスクリプトを作り、スプレッドシートにアドオンすれば、ExceL+VBAのようにできるのではなかろうか。
https://developers.google.com/apps-script/refere …

Javascriptだとグローバルに書いた処理はロード時に実行されるので、同様なら、シートを開くだけでTODOリストの期限をチェックしてメール送信まで自動でできそう。
(Googleのスクリプトはスプレッドシートだけのものではないから厳しいかもしれない。。。
逆に、読み込み時というイベントに応じて処理を行う仕組みが用意されているかも。)
とはいえ、やり過ぎならVBA同様、メニュー「挿入」-「画像」で□を書いてスクリプトを割り当て、期限チェックボタンとする等。

気になるとこでは、
・メール送信はおそらく送信元はスプレッドシードの所有者のグーグルアカウント???
・メール送信失敗は、APIの戻りが同オブジェクトなので、前後で受信トレイのスレッド数を比較???
 (失敗ならエラーメールが受信される。)
    • good
    • 0
この回答へのお礼

ご回答誠にありがとうございます。

とても丁寧に教えていただいて上で恐縮なのですが、当方はプログラミングに関する知識が、皆無に等しいのです。

お手間をおかけついでにいくつかお尋ねしたいのですが、

●こちらのAPIはスクリプトエディタを開いてそのままコピペすればよろしいのでしょうか?

●もしそうだとすれば、どこからどの範囲をコピペして、どの範囲を各個人のメールアドレスに書き換えればよいですか?

もし、これがシートをひらくだけで実行されるなら、ほぼやりたいことが実現できるのですが、「スプレッドシートをひらく」というアクションが無ければ実行されないのでしょうか?
だとすれば、開きっぱなしの場合はTODOの期限が経過しても実行されない可能性はありますでしょうか?

お手すきの折がございましたら、ご返答いただければ幸いです。
どうもありがとうございます。

お礼日時:2016/05/10 17:33

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!