Google Apps ScriptのonChangeは、トリガーオブジェクトを変数に渡すことができません[重複]
この投稿は閉じられましたが、他の場所で同等の問題を見つけることができませんでした。
onChange()トリガーから行を非表示にするスクリプトを作成しようとしています。セルが「0」になったら、そのセルが入っている行を非表示にします。私の最初の投稿からのコメントは、onChangeから渡されたオブジェクトに範囲が含まれていないことを教えてくれました。この問題を解決する回避策はありますか?
私のスプレッドシートには、バックエンド用の入力シートと、クライアントに送信されるフロントエンド用の出力シートがあります。onChangeトリガーが必要です。これにより、データがフロントエンドに送られるときに、クライアントに電子メールで送信するための適切な形式になります。最も重要なのは、空の( '0)行を非表示にする必要があることです。
私は新しく、学習しているだけなので、onChangeオブジェクトに範囲が含まれていないため、私が書いたものは機能しません。ありがとうございました。
function onChange(e) {
var ss = SpreadsheetApp.getActiveSpreadsheet();
var sheet = ss.getSheetByName("Client");
var cell = e.range;
var VALUE = cell.getValue();
if(VALUE == 0){
sheet.hideRow(cell);
}
}
私も試しました:
function onChange(e) {
var ss = SpreadsheetApp.getActiveSpreadsheet();
var sheet = ss.getSheetByName("Client");
var cell = e.getValue();
if(cell == 0){
sheet.hideRow(cell);
}
}
回答
onChangeトリガーによって返される範囲値はありません。イベントオブジェクトは次のようになります。
{"authMode":"FULL","changeType":"INSERT_ROW","source":{},"triggerUid":"","user": {"email":","nickname":""}}
さらに、onChangeにはインストール可能なトリガーが必要であることに注意してください。
onChangeイベントオブジェクト
トリガーが混乱しているようです。「大きい」または構造変化がなく変更した値よりも、発生するトリガーが起動。ドキュメントから:onChange onEditonChange
インストール可能な変更トリガーは、ユーザーがスプレッドシート自体の構造を変更したときに実行されます。たとえば、新しいシートを追加したり、列を削除したりします。
イベントオブジェクトの仕様から、onChange
トリガーからプログラマーに渡される値がないことがわかります。そのため、探している機能のタイプを簡単に実行することはできません。
あなたonEdit
はあなたが探しているものにより近く機能するトリガーを使いたいです。値が変更されると起動し、新しい値と古い値が表示されます。onEdit
は「単純なトリガー」でもあるため、のように追加のトリガーをインストールする必要はありませんonChange
。
onEdit
コードを使用すると、次のようになります。
function onEdit(e) {
val range = e.range;
val sheet = SpreadsheetApp.getActiveSheet();
if (e.value == 0) {
var rowNum = e.range.getRow();
sheet.hideRow(rowNum);
}
}