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

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

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

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

このQ&Aに関連する最新のQ&A

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に関連する人気のQ&A

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

このQ&Aを見た人はこんなQ&Aも見ています

このQ&Aを見た人が検索しているワード

このQ&Aと関連する良く見られている質問

Qスプレッドシートでドロップダウンリストの内容を自動更新させたい

http://office-qa.com/Excel/ex68.htm
こちらのサイトの方法をスプレッドシートで行いたいのですが上手くいきません。

A列に記入(月に何度か追加される)したものを、B列のプルダウンの項目に反映させて記入がしたいです。
A1にあるりんごをB列だとB2に表示させなければいけない時があるため、A列にあるものを隣のB列にそのまま反映させたいわけではないです。

A列       B列(プルダウン)
1.りんご     もも
2.ばなな     りんご
3.もも      ばなな
4.かき(追加)

Aベストアンサー

関数を使ったリストではなく、[名前付き範囲]を使ってみては。

設定例:A列にリストに表示させる項目が追加される場合
メニューの[データ]→[名前付き範囲]を選択。
表示された[名前付き範囲]ウィンドウの「名前付けされた範囲1」を
適当な名前「果物」にします。リストの範囲が[ 'シート1'!A1 ]に
なっていたら、[ 'シート1'!A1:A1000 ]のように追加される品数で
用意し[完了]で決定します。

プルダウンを表示したい範囲を選択して、データ→入力規則から
[データの入力規則]を出し、[セル範囲]をB列の範囲を指定します。
[条件]を[リストの範囲]で指定にして、範囲を「果物」とします。
[保存]ボタンを押すと、プルダウンがB列の範囲に表示されます。

A列で入力されていない範囲はプルダウンに表示されません。
A列にデータを追加をすると、プルダウンのリストも増えます。

Q特定のPCでノーツの共有社内アドレスの特定グループに送信できません

いつも大変お世話になっております。

私の会社にて、社員同士のやり取りはノーツにて行っております。
そこで、社員全員に発信したい内容は「ユーザー全員」というグループ
を選択します。送信ボタンを押すと、他のメール送信完了状況と何ら変らない状態ですが、
メール送信されていないのです。エラーが出るわけでもないのです。
送信済みトレイにも残っています。

ノーツ:Ver6.5 or R5
ドミノサーバー:R5

他のグループには送信出来ている為、「ユーザー全員」というグループの
みが不具合を起こしています。

ただし、「ユーザー全員」というグループは1,000人以上います。
他のグループは多くて20名行くか行かないかです。

もちろん、不具合を起こしているPC以外ではユーザー全員送信できます。

仕様書やマニュアルがない為、どこを見たら良いのかもわからず、
保守にも入っていない為、IBMに相談も出来ない状況です。

ご存知の方がいらっしゃいましたら、何卒、ご教授の程宜しくお願い致します。

Aベストアンサー

> (補足)今回は個人アドレス帳でなく、ドミノサーバーで登録した「ユーザー全員」グループで送信していることは確認できております。
どうやって確認しましたか?個人アドレス帳に同じグループ名が存在していたら、そちらが優先されますよ?

それで、現象が発生しているPCのノーツクライアントのバージョンは何でしょう?6.5なのか、5なのか?
それで対処が変わるので確認してください。

>済みません、正確な人数は把握しておりませんが社員が1,000人以上いる会社で一人ずつノーツIDをもっておりますので1,000人近くは登録していると思われます。1,000人以上登録できない仕様でしょうか。そうなりますとその対策も必要となりますので教えて頂けますでしょうか。

ヘルプによると、「テキストフィールドのサイズは32KBまで」とありますが、こんなに保存できなかったという記憶があります。

ちなみに子グループを作成して、その中にユーザを登録します。
「ユーザー全員」というグループには、最初に作成した複数の子グループを登録します。

これ以上は、ノーツのサポートをやっている会社にお願いした方が良いですよ。IBMのサポートも期待できないなら尚更です。

> (補足)今回は個人アドレス帳でなく、ドミノサーバーで登録した「ユーザー全員」グループで送信していることは確認できております。
どうやって確認しましたか?個人アドレス帳に同じグループ名が存在していたら、そちらが優先されますよ?

それで、現象が発生しているPCのノーツクライアントのバージョンは何でしょう?6.5なのか、5なのか?
それで対処が変わるので確認してください。

>済みません、正確な人数は把握しておりませんが社員が1,000人以上いる会社で一人ずつノーツIDをもっておりますので...続きを読む

QGoogleスプレッドシートでの抽出について

Googleスプレッドシートで参加者のリストを作成したいのですが、添付画像にあるように
それぞれが月~金に参加の可否を○×でプルダウン形式で選択し、コメント欄に文章を入力します。

そこで、画像下部のように各曜日の○が選択されてる人物の名前とコメント欄を抽出したいのですがどうすればいいのでしょうか?

分かる方いらっしゃいましたら回答をお願いします。

Aベストアンサー

Googleスプレッドシートには,エクセルにはない便利な関数が幾つかあります。

B11:
=filter(A2:A8,B2:B8="○")
C11:
=filter(G2:G8,B2:B8="○")
とそれぞれ記入します。
B12やC12以下には自動でcontinue関数が追加され,希望の結果が得られます。

QGoogle カレンダー

スケジュール管理としてグループウェアを導入する前に当面の間、Google カレンダーを使おうと思っています。共有として使う場合、管理者が新規もメールアドレスを取得し、Google カレンダー用のパス・ワードを関係者に通知して行えばよいのでしょうか。

Aベストアンサー

こんにちわ。
googleカレンダーの解説サイトとして有名なサイトがありますので、こちらを参考に設定していただければご利用いただけます。

結論から言えば、パスワードを通知する必要はありません。

googleカレンダー 使い方
http://saito-kazuo.pupu.jp/gcal/

他ユーザーとの共有設定
http://d.hatena.ne.jp/chiyorozu/20060413

また、googleカレンダーは設定によっては第三者により閲覧・検索が可能になります。
機密情報やプライベートな情報を登録される際には十分にご注意ください。

Googleカレンダーで情報流出?
http://ohnishi.livedoor.biz/archives/50249647.html

QVBAにて、ユーザーフォーム上に設置したスプレッドシートを編集するコー

VBAにて、ユーザーフォーム上に設置したスプレッドシートを編集するコード

VBAにて、OMC?という機能を使ってユーザーフォームにスプレッドシートを複数設置しました。
このスプレッドシート上にあるデータを、エクセルシートに持ってくる事はできたのですが、スプレッドシートそのもののデータの追加、削除等が出来ません。

スプレッドシート→エクセルシートへのデータ移動はこのようなコードを使っています。これは問題なく動きました。
Sheets("DB").Range("H1").Value = UserForm1.Spreadsheet2.Range("A" & cnt).Value

ですが、逆に
UserForm1.Spreadsheet2.Range("A" & cnt).Value = Sheets("DB").Range("H1").Value
としても、エラーは出ませんが反映されないようです。

やりたい事は、スプレッドシートのある範囲の値をクリアしたいというもので
UserForm1.Spreadsheet1.Range("B10:H22").Select
Selection.Clear

このように設定したのですが、やはり反映されません。

ユーザーフォーム上のスプレッドシートを編集するには、何か特別なコーディングが必要なのでしょうか?

VBAにて、ユーザーフォーム上に設置したスプレッドシートを編集するコード

VBAにて、OMC?という機能を使ってユーザーフォームにスプレッドシートを複数設置しました。
このスプレッドシート上にあるデータを、エクセルシートに持ってくる事はできたのですが、スプレッドシートそのもののデータの追加、削除等が出来ません。

スプレッドシート→エクセルシートへのデータ移動はこのようなコードを使っています。これは問題なく動きました。
Sheets("DB").Range("H1").Value = UserForm1.Spreadsheet2.Range("A" &...続きを読む

Aベストアンサー

当方の Excel2003 + OWC11のスプレッドシートでは お示しのコードで動作していますよ

スプレッドシートのシートを指示していないのでアクティブシートに対しての操作になっているはずです

cntの値自体は期待通りなのでしょうか

UserForm1.Spreadsheet1.Range("B10:H22").Select
で選択自体は出来ていますか?

Selection.Clear
と記述してしまうとExcelのシートに対しての動作になってしまうと思います

スプレッドシートに対して行いたいのであれば
UserForm1.Spreadsheet1.Selection.Clear
といった具合にオブジェクト指定するか

With/End With などで指示しておきましょう

With UserForm1.Spreadsheet1
  .Range("B10:H22").Select
  .Selction.Clear
End With
といった具合です

QGoogleカレンダーのオプション(通知、ポップアップ)の削除設定について

Googleカレンダーにて予定を作成する際、初期状態では「オプション」の「通知」が「ポップアップ:10分」になっています。
ポップアップはさせたくないので、予定を作成するたびに「削除」をクリックして「通知」を削除しています。

常に「通知」を削除した状態で予定を作成できるようにしたいのですが、そのような設定項目は見当たりませんでした。
もし方法をご存知でしたら教えてください。

(カレンダーをクリックしてタイトルだけを入力してさくっと作成した予定が、ポップアップしないようにしたいのです)

Aベストアンサー

カレンダー画面上で右上の「設定」
→カレンダー設定の「全般」の右の「カレンダー」
→自分のユーザ名横の「通知」
で設定できると思います。

QCCcleranerで不要ファイル削除後、グーグルドライブのスプレッドシートが表示されず、困ってます

こんにちは。
ささやかな物販HPの受注フォームとして、グーグルドライブのスプレッドシートを
使っています。
先日、PCがサクサク動かなくなったので、CCclearner で分析 → 不要ファイルを
掃除しました。
その後、グーグルドライブのスプレッドシートが表示されなくなり、グーグルドライブでは
過去に保存した画像ファイルのみ表示されます。
CCclearnerが、スプレッドシートを不要ファイルと誤認識?して掃除したなら真っ青です。
スプレッドシートを再表示させる方法はありますか。
WEB ブラウザはGクローム OSはWin8.1です。

Aベストアンサー

既に色々と試されているようですが。

chromeのキャッシュとCookieを消してみる。
chromeの拡張機能をオフにしてみる。
chromeの画面で“コントロール+F5”を押してみる。
chromeの画面で“シフト+F5”を押してみる。

別ブラウザで試してみる。開けたらファイルをダウンロードしてPCに保存→保存したファイルをGoogleドライブにアップロード。

Googleドライブを開く→開けないGoogleスプレッドシートのタイトル左にあるチェックボックスにチェックを入れる→画面上部にあるメニューから「ダウンロード」をクリック→形式を指定してダウンロード→ダウンロードしたファイルをPCに保存→保存したファイルをGoogleドライブにアップロード

あと、CCclearner はPCを掃除するソフトではなく、レジストリをいじれる人が、その作業を効率化するソフトと考えるべきものですので、使用しない方が良いです。

Q特定のソフトで文字化けする

XPで使ってます。ノートパソコンで問題なかった
ソフトをデスクトップにインストールすると
メニューバーが文字化けしてしまいます。
再インストール、再起動、フォントキャッシュの削除
までは試したのですが直りません。
なにか直す方法はないものでしょうか?

Aベストアンサー

VBで作ったフリーソフトならランタイムをインストールしないと化けることがあったと思います。

違ったらすいません。

Qgoogleappsのスプレッドシートの使い方

googleappsスプレッドシートについて教えて下さい

質問1
googleappsのスプレッドシートて、基本的に保存ボタンがなく
入力したら即保存できてしまいますが、これがものすごく不便な時があります
普段更新権限はもっているのですが・・・いまだけ読み取り専用で開くとかそういう事は
できないのでしょうか?

質問2
自分で作成したスプレッドシートなら削除しても、ゴミ箱にありますが
他の人が作成して共有しているスプレッドシートを削除すると
自分のゴミ箱にも作成者のゴミ箱にもなかったのですが
人の作ったものを削除してしまったら、即物理削除で、復元することはできないのでしょうか?
できるとしたらその操作を教えて下さい

Aベストアンサー

スプレッドシートを開いて、表示メニューからリストを選択したら、読み取り専用のスプレッドシートを共有しながら、並べ替えとフィルタリングを許可する事も可能だったと思いますが、違うかも;;

完全に削除してしまったファイルとかを復元する場合、一定期間内ならGoogleが復元してくれるみたいですが…。
詳細までは把握していないので明確な回答ができないです;;申し訳ない…。

Qこのアドレスって何?

会社の社員アドレスを転送で受け取っています。本人は使っていないので、代理で私に転送させていますが、今回転送で送られてきたアドレスが、正式な社員のアドレスから「Undisclosed-Recipient:;」に変わっていました。
これはどういう事が考えられますか?
会社の社員アドレス自体には問題なく着信しているようなのですが…

Aベストアンサー

メール発信時には:あて先 CC: BCC:と3種の発信法が選べます。最後のBCCで例えば不特定多数に発信し、他に送った相手を特定出来ない様にした場合、この「Undisclosed-Recipient:;」と成ります。その社員の方は、他にも同じメールを発信しているのではないでしょうか。


このQ&Aを見た人がよく見るQ&A

人気Q&Aランキング

おすすめ情報