前提・実現したいこと
プログラミング初心者です。
スプレッドシートの時間、日付をもとに、GoogleChatでリマインド機能を実装することを目的にしています。
スプレッドシートのツールから、スクリプトエディタを表示し、そこにコードを打ち込んでいます。
実行すると、Cannot read property 'getRange' of nullのエラーが表示され、うまく作動しませんでした。
https://blog.members.co.jp/article/40069
このサイトを参考にしました。
発生している問題・エラーメッセージ
TypeError: Cannot read property 'getRange' of null remind @ remind.gs:21
該当のソースコード
function remind() { // 現在日時を取得 var date = new Date(); Logger.log(date); // 曜日 var day= date.getDay(); Logger.log(day); // 時間 var hour = date.getHours(); // 分 var minutes = date.getMinutes(); // スプレの情報を取得 var sheet = SpreadsheetApp.getActive().getSheetByName('remind'); //var sheet = SpreadsheetApp.openById('https://drive.google.com/drive/my-drive').getSheetByName('remind'); //var sheet = spread.getSheetByName('remind'); var rowLast = sheet.getLastRow(); //var rowLast = 8; //const FValues = sheet.getRange('4').getValues(); //F列の値を全て取得 //const LastRow = FValues.filter(String).length; //空白の要素を除いた長さを取得 //Logger.log(LastRow); var data_remind = sheet.getRange(2, 1, rowLast, 4).getValues(); // 登録されているメッセージの回数繰り返す for(var i = 0; i < data_remind.length; i++){ // スプレの時間指定とメッセージを取得 var remind_day = data_remind[i][0]; var remind_hour = data_remind[i][1]; var remind_minutes = data_remind[i][2]; var message = data_remind[i][3]; // 一分ごとのトリガーを設定し、合った時にメッセージをPOSTする if(day == remind_day && hour == remind_hour && minutes == remind_minutes){ //時間が合っているか var url = 'https://chat.googleapis.com/v1/spaces/AAAAxe_B6iU/messages?key=AIzaSyDdI0hCZtE6vySjMm-WEfRq3CPzqKqqsHI&token=uFDTnSz7vzmKnp53YPqaYTKFC1YdFlsqlLwwRA8QsSc%3D'; var botMessage = { 'text': message } var options = { 'method': 'POST', 'headers': { 'Content-Type': 'application/json; charset=UTF-8' }, 'payload': JSON.stringify(botMessage) }; var result = UrlFetchApp.fetch(url, options); Logger.log(result); Logger.log('applicable'); }else{ Logger.log('not applicable'); } } }
var sheet = SpreadsheetApp.getActive().getSheetByName('remind');
を
var sheet = SpreadsheetApp.openById('https://drive.google.com/drive/my-drive').getSheetByName('remind');
に変える
var rowLast = sheet.getLastRow();
を
var rowLast = 8;
に変える
ここに問題に対して試したことを記載してください。
補足情報(FW/ツールのバージョンなど)
ここにより詳細な情報を記載してください。
何をしててなぜこうなったのかなどの記載をするべきです。
この質問内容だと解決方法を知っていても答える気にならないと思います。
JavaとJavaScriptは別物です。
というかGASでは?
https://teratail.com/tags/Google+Apps+Script
たくさんのご指摘ありがとうございます。
始めて本サイトを使うもので、一度目は編集が終わる前に投稿してしまいました
おっしゃる通り、javaではなくGASというものでした
失礼しました
シート"remind"をご提示ください。
https://docs.google.com/spreadsheets/d/1E1fQKPmW0NSYp_MTpwWhKefr1o-knIO_uelTvGIDzjQ/edit?usp=sharing
こちらがシート"remind"のコピーです。実際のシートに名前は”remind”になっています。
あなたの回答
tips
プレビュー