5

これはパイのように簡単なように思えますが、私の小さなテスト実装が機能しないようです。最終的な目標は、特定の範囲のセルが編集された場合にのみ実行される関数を作成することです。これを達成するために、すべての編集で実行される関数を作成していますが、編集されたセルの範囲が特定の範囲内にあるかどうかを確認することから始め、これが true の場合にのみ残りのコードを実行し、それ以外の場合はそれを実行します。すぐに終了します。

これを行うための最初のステップは、編集されたセルの範囲を返す方法を見つけることです。いろいろテストしてみました。

スプレッドシートを編集してテストした現在のバージョンは次のとおりです。

function onEdit(e){
var ss = SpreadsheetApp.getActiveSpreadsheet();
var sheet = ss.getSheets()[0];
var eRange = e.range;
var message = eRange.getA1Notation();
ss.toast(message);
}

(出力: トーストが表示されない/何も起こらない)

ここに投稿した他のバージョンは約 10 ありましたが、役に立たないことに気付きました。

トースト メッセージで [object Object] と [undefined] を返すことができたので、トースト関数でばかげたエラーが発生していないことがわかります。

e.range は範囲を返しませんか? それは私が間違っているところですか?範囲を返す場合、「ss.getRange("A1").someMethod()」のようなものを使用したのと同じように、範囲内のメソッドを使用できるべきではありませんか? それとも、私が理解していない違いがありますか?

さて、私はここでいくつかの異なる質問をしたことに気付きました.私が間違っているところを修正するのに役立つ場合に備えて、私の思考プロセスをより明確にしようとしています. 簡単な質問は次のとおりです。編集されたセルの範囲を返すには、どのような種類のコマンドまたはメソッドを使用できますか?

初歩的な質問で大変申し訳ありません。誰かが正しい検索用語の組み合わせを入力して、結果の一番上に答えが表示されるのではないかと本当に心配しています...しかし、私は自分でそれを見つけることができないようです. 私は StackOverflow と以前の Google グループ サポート フォーラムの両方からの多くのコード スニペットと、私自身の多くの試みを試しました。ここでの私の究極の目標について、同様の質問がたくさん寄せられているのを目にします。特定の範囲のセルが編集された場合にのみ onEdit 関数を実行します。私には合いません。答えはそこにあると確信していますが、私は今、3晩連続で検索しており、多くの同様の質問が寄せられているのを見つけました。これらの提案の私自身の実装が機能するようには見えません。辛抱強くお待ちいただきありがとうございます。また、ご提供できる回答をありがとうございます。

4

1 に答える 1

5

これがドキュメントから取られた(そしてわずかに変更された)コードです:

function onEdit(event){
  var ss = SpreadsheetApp.getActiveSpreadsheet();
  var sh = event.source.getActiveSheet();
  var r = event.source.getActiveRange();
  r.setComment("Last modified: " + (new Date())+' by '+Session.getActiveUser());
  ss.toast('Last cell modified = '+r.getA1Notation()+' by '+Session.getActiveUser());
}
于 2012-10-21T06:00:37.113 に答える