前提・実現したいこと
データを管理しているシートから条件に合致する行を、通知用の別シートにクエリ関数で抽出しています。
通知用のシートにデータがある場合(下記コードではN列にデータがある場合)は定時にCWでチャットを投下するようにGASを組んでいるのですが、
ここ1ヶ月くらいの間、通知用シートにデータが全くない場合も元のデータ管理シートから情報を引っ張ってきているのか
通知がされるようになりました。
また、通知用シートにデータがある場合でも、そのデータにはない情報をどこからか引っ張ってきて通知することもあります。
元のデータ管理シートを確認しても通知対象となっておらず、なぜ通知しているのか分からない状況です。
以前のように通知用シートにあるデータのみ通知するよう修正したいです。
該当のソースコード
// スプレッドシートのID var SHEET_ID = '●●●●●●'; //スプレッドシートのシート名 var SHEET_NAME = '通知用'; // ChatWork用定数 // チャットルームID // https://www.chatwork.com/#!rid【ここ】 var ROOM_ID = '●●●●●●' ; // アクセストークン var TOKEN = '●●●●●●'; function postChatwork (message) { var payload = { 'body' : message }; var headers = { 'X-ChatWorkToken' : TOKEN }; var options = { 'method' : 'post', 'payload' : payload, 'headers' : headers }; UrlFetchApp.fetch('https://api.chatwork.com/v2/rooms/' + ROOM_ID + '/messages', options); } function onUpdateBatchCheck_Alert_SapporoSendai() { // スプレッドシートを特定 var spreadsheet = SpreadsheetApp.openById(SHEET_ID); var sheet = spreadsheet.getSheetByName(SHEET_NAME); // getvaluesの実行速度が遅いのでシート内容を一括で取得 // A列1行目が[0][0]になることに注意する var data = sheet.getDataRange().getValues(); // チャット送信状態を保持する列のインデックス var targetColumnIndex = 13;// N列の更新を監視する var targetRowIndexes = []; // チャット通知対象の行リスト // チャット通知対象の行リストを生成する // ヘッダが0行目なので読み飛ばす for (var i = 1; i < data.length; i++) { // N列に何らかの入力がある if (data[i][targetColumnIndex]) { targetRowIndexes.push(i); } } // 通知対象行が1なら離脱 if (targetRowIndexes.length == 1) return; // シートの行ごとにメッセージブロックを生成する var msg= ''; for (var i = 1; i < targetRowIndexes.length; i++) { var row = targetRowIndexes[i];// シート上はi+1行目 var cell = data[row][targetColumnIndex];// i+1行目N列のセルの値 msg += Utilities.formatString('[info]%d行目\n%s[/info]', row + 1, cell); } var message = Utilities.formatString('[toall]\nhttps://docs.google.com/spreadsheets/d/18hKT9Y_DQvaN3qD5vdNQteyK3l1dkR3Gq8EG1h17ge0/edit#gid=900048095\n【注意】未処理の案件があります\n%s',msg); // ChatWorkへメッセージを送信 postChatwork(message); }
試したこと
同様のGASを組んでいるシートが他に4つありますが、そちらは不具合を起こしていませんでした。
組んでいるコードも確認しましたが、不具合を起こしているものとSHEET_IDが異なるだけであとは変わりませんでした。
GASではなくスプレッドシート自体に問題があるのでしょうか。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。