🎄teratailクリスマスプレゼントキャンペーン2024🎄』開催中!

\teratail特別グッズやAmazonギフトカード最大2,000円分が当たる!/

詳細はこちら
Google Apps Script

Google Apps ScriptはGoogleの製品と第三者のサービスでタスクを自動化するためのJavaScriptのクラウドのスクリプト言語です。

Google

Googleは、アメリカ合衆国に位置する、インターネット関連のサービスや製品を提供している企業です。検索エンジンからアプリケーションの提供まで、多岐にわたるサービスを提供しています。

Q&A

1回答

1009閲覧

Google Apps ScriptとLineの連携

yato337

総合スコア4

Google Apps Script

Google Apps ScriptはGoogleの製品と第三者のサービスでタスクを自動化するためのJavaScriptのクラウドのスクリプト言語です。

Google

Googleは、アメリカ合衆国に位置する、インターネット関連のサービスや製品を提供している企業です。検索エンジンからアプリケーションの提供まで、多岐にわたるサービスを提供しています。

0グッド

0クリップ

投稿2019/12/17 03:17

編集2019/12/17 04:31

現在Google Apps ScriptとLineをIFTTTで連携して通知を送るコードを作成中です。この方のコードを参考に作ってみたのですが、これを少々変えようと思い、苦戦しています。 

参考にしたサイト:https://tadaken3.hatenablog.jp/entry/not-quit-easily

このコードは何々から何日経過したというコードですが、これを何々まで何日というコードに変えたいです。

var ss = SpreadsheetApp.getActiveSpreadsheet(); //スプレッドシートを取得 var sheet = ss.getSheetByName("OOOOO"); //シートを取得 function main(){ setFormuraLastRow() var maxRow = sheet.getDataRange().getLastRow(); var passDate = sheet.getRange(maxRow,3).getValue(); var message =""; //経過日が3日もしくは7日以上だったらLINEに通知を送る if (passDate==1 || passDate>=1){ message = "最後の勉強から"+ passDate + "日経過しました"; sentToLine(message); } } //IFTTTの日付形式から通常の日付に変換 function toDateFromIFTTT(str){ str = String(str); str = str.replace(/at.*/,"") d = new Date(str); return d; } //シートの最終行に経過日を計算する式をセットする function setFormuraLastRow(){ var maxRow = sheet.getDataRange().getLastRow(); var str = sheet.getRange(maxRow,1).getValue(); var code = '=TODAY() - TO_DATE(B'+ maxRow+')'; sheet.getRange(maxRow,2).setValue(toDateFromIFTTT(str)); sheet.getRange(maxRow,3).setFormula(code); } //LINEに通知を送る関数 function sentToLine(message){ var token = "OOOOOOOOO"; var options = { "method" : "post", "payload" : "message=" + message, "headers" : {"Authorization" : "Bearer "+ token} }; UrlFetchApp.fetch("url",options); }

これに予定までの日付の定義とその日までの計算をしなければいけないのはわかっていますが、当方GASは初心者のため、うまくコードが思いつきません。よろしくお願いします。

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

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

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

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

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

mdj

2019/12/17 04:30

//シートの最終行に経過日を計算する式をセットする のところで、 期日ー今日 でしょうかね。
yato337

2019/12/17 05:35

var code = '=TODAY() - TO_DATE(B'+ maxRow+')'; TODAY()を ('2019/12/20' - TO_DATE(B' + maRow;') という感じですかね?
mdj

2019/12/17 06:02

動かしてみて、思ったように動作するかを確認してみてはどうでしょうか~。思う結果と違うようだったら、何が違うのかを考えてみてください
guest

回答1

0

質問者様の意図とは異なってしまうかもしれませんが、
スプレッドシート内の関数で残日数の問題を解決してしまうのも手かなと。

イメージ説明

例えば上図のようなセルを用意すれば、
GASの方はもう少し簡単に実装できるはずです。

var

1var sheet = ss.getSheetByName("OOOOO"); //シートを取得 2 3function main(){ 4 setFormuraLastRow() 5 var remainingDate = sheet.getRange('B4').getValue(); 6 var message =""; 7 //経過日が3日もしくは7日以上だったらLINEに通知を送る 8 if (remainingDate==1 || remainingDate>=1){ 9 message = "期限まであと"+ remainingDate + "日になりました"; 10 sentToLine(message); 11 } 12} 13 14//LINEに通知を送る関数 15function sentToLine(message){ 16 var token = "OOOOOOOOO"; 17 var options = 18 { 19 "method" : "post", 20 "payload" : "message=" + message, 21 "headers" : {"Authorization" : "Bearer "+ token} 22 }; 23 24 UrlFetchApp.fetch("url",options); 25}

上記未検証ですので、質問者様の方で検証していただければと思います。

投稿2019/12/19 04:10

退会済みユーザー

退会済みユーザー

総合スコア0

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

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

ただいまの回答率
85.36%

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

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

質問する

関連した質問