kokokoko05
@kokokoko05

Are you sure you want to delete the question?

Leaving a resolved question undeleted may help others!

【GAS】複数条件設定でスラック通知について

解決したいこと

スプレットシートB列【完了】かつ、C列が【100円以上】の場合はSlackに通知させたい

スクリーンショット 2023-06-19 13.54.44.png

発生している問題・エラー

エラー等は発生しておりません。

該当するソースコード

if((newInputColumn == 2 || newInputColumn == 3) && activeSheet.getRange(activeCell.getRow(),1).getValue() == "完了" && activeSheet.getRange(activeCell.getRow(),3).total >= 100) {

自分で試したこと

複数条件の方法を調べて作成しましたが、Slackには通知されませんでした。。

改善策をお教えいただけますと幸いです、、!

0

2Answer

activeSheet.getRange(activeCell.getRow(),1).getValue() == "完了"&&
activeSheet.getRange(activeCell.getRow(),3).total >= 100

ですがgetRangeの第二引数が
「完了」はB列の意図で"1"、「100」はC列の意図で"3"と二つズレております。
前者の方が"2"かと思います。

※ちなみにgetRange(activeCell.getRow(),3).totalのtotalはRange型には存在しないように思えるのですが、これは自作関数でしょうか?
https://developers.google.com/apps-script/reference/spreadsheet/range?hl=ja
エラーは発生していないとのことですのでここは一旦無視します。

0

1Like

質問に前提が全く書かれていないため、こちらで前提を設定した上でコードを示します。

前提:
①アクティブなスプレッドシートの2列目または3列目に、ユーザーが何らかの文字を直接入力したときのみ検知するものとする。
(他のGoogle Apps Scriptやwebサービスによって間接的にスプレッドシートに記入されるのではない、ということ)
②下記onInput関数に、トリガー(編集時)が設定されているものとする。(GASでのトリガーの設定方法はGoogleで検索すればすぐ出てきますので自分で調べてください)

③入力対象のシートの3列目の書式は数値になっているものとする。
④複数セルが選択されている状態で入力した場合の動作は保証しない。

上記の前提で、アクティブなスプレッドシートの2列目または3列目に文字が入力されたときに、
「入力した行の2列目が"完了"」かつ「入力した行の3列目が100以上の数字」であるときにslackを動かすコードは下記になります。

(slackを動かすコードは質問文で省略されているため、ここでも省略します)

function onInput(e) {
  if (e.range.columnStart !== 2 && e.range.columnStart !== 3) return;
  const activeSheet = SpreadsheetApp.getActiveSheet();
  if (activeSheet.getRange(e.range.rowStart, 2).getValue() === '完了' &&
    activeSheet.getRange(e.range.rowStart, 3).getValue() >= 100) {
    // 以降にSlackを動かすコードを書く。
    // ...
    // ..
  } 
}
0Like

Your answer might help someone💌