前提
Googleスプレッドシートで最終行が更新された際にスラックに通知したいです。
現状、メールからGSSに自動転記されるようなGASを組み、
目視でスラックに通知という列を作成して、指定セルの変更をトリガーに通知を飛ばしています。
実現したいこと
やりたいこと
- 最終行が更新されれば、更新された行のデータを拾ってスラックに通知
- 可能であれば、指定列が空白な行のデータをスラックに通知
▼詳細
・I列の最終が更新されれば、F・G・I列の情報を拾う(トリガー:更新)
・K列が空白であれば、上記と同様に通知(トリガー:指定時間)
現状のGAS
function myFunction() { var activeSpreadsheet = SpreadsheetApp.getActiveSpreadsheet(); // スプレッドシート var activeSheet = activeSpreadsheet.getActiveSheet(); // アクティブシート if(activeSheet.getName() != "シート名"){ return; } var activeCell = activeSheet.getActiveCell();// アクティブセル //指定セルの変更をトリガーに if(activeCell.getColumn() == 10 && activeCell.getValues() == "通知"){ var newInputRow = activeCell.getRow(); var time = activeSheet.getRange(activeCell.getRow(), 1).getValues(); var product_no = activeSheet.getRange(activeCell.getRow(), 7).getValues(); var slname = activeSheet.getRange(activeCell.getRow(), 8).getValues(); var taiou = activeSheet.getRange(activeCell.getRow(), 9).getValues(); //スラックへの通知文
試したこと
var last_row = sh.getLastRow(); //スプレッドシートにデータが入力されている箇所の、最終行の数値を取得
で最終行を取得しようとしましたが、
・I列の指定
・F・G・I列の情報
を取れませんでした。
また、下記を参照しましたが
同様に変更行のその他のセル情報が取得できずに今回の質問となります。
https://teratail.com/questions/174346
「I列の最終が更新されれば、F・G・I列の情報を拾う(トリガー:更新)」について
①「最終行が更新された際」の「更新された際」というのは、(スプレッドシートに"手入力で"最終行が更新された場合等ではなく)「GASによって、メールの指定した一部の内容が、転記対象のGoogleスプレッドシートの既存最終行の1つ下の行に"自動で”挿入されたとき」という理解でよろしいでしょうか。
それとも 「もともと何かが入力されていた行」の I列が上書きされたときに、そのF・G・I列の情報を拾う、という意味でよろしいでしょうか。
(「更新」という単語の意味は、一般的に考えれば、「上書き」のことと思いますので)
②「・I列の指定・F・G・I列の情報を取れませんでした。」とは、"具体的に"どういう意味でしょうか。
「GASによってメール内容がGSSへ転記される際に、ある条件で I セルにデータが自動入力されるようにしているが、activecell==10 としているにもかかわらず I セルへの自動入力を捕捉できない(activecell==10 が trueにならない)」という意味でしょうか?
そもそも if 文の外側と内側に、console.log 等を置いて、if文が想定通り動いているかのか、動いていないのかを確認されたりしましたか?
回答をいただきありがとうございます。
私の説明不足と、言葉の定義が間違っており申し訳ございません。
下記回答です。
>「I列の最終が更新されれば、F・G・I列の情報を拾う(トリガー:更新)」について
①の認識です。
「GASによって、メールの指定した一部の内容が、転記対象のGoogleスプレッドシートの既存最終行の1つ下の行に"自動で”挿入されたとき」
をトリガーとして設定したいです。
>②「・I列の指定・F・G・I列の情報を取れませんでした。」とは、"具体的に"どういう意味でしょうか。
やりたいこととしては
A~H列がGASで自動更新
I列以降は、VLOOKUPで他スプレッドシートとの突合を行う。
GASで最終行に挿入された際に、I列に情報がはいったタイミングで
該当行のF・G・I列に入っている項目をスラックに通知したい
となります。
>「GASによってメール内容がGSSへ転記される際に、ある条件で I セルにデータが自動入力されるようにしているが、activecell==10 としているにもかかわらず I セルへの自動入力を捕捉できない(activecell==10 が trueにならない)」という意味でしょうか?
こちらは、手入力でI列に「通知」と記入すると問題ないのですが、
上記の通りVLOOKUPで自動で転記された際にアクティブセルとして拾わず、
トリガーが動かないという意味です。
確認が遅くなり申し訳ございませんが、
何卒よろしくお願いいたします。
回答1件