例:
編集時トリガーをインストールすると、関数に開始行と終了行および列が渡されます。ただし、どのシートが編集されたかではありません。
当然、最初に考えたのは SpreadsheetApp().getActiveSheet() を取得することでしたが、うまくいきません。
サンプル スプレッドシートの任意のセルを編集します。インストールされた編集時トリガーは、何を編集したかを示す値を Sheet1 に入力します。シート 2 またはシート 3 に切り替えて、何かを編集します。Sheet1 が編集されたことを常に報告します。
トリガーのコード:
function my_on_edit(e) {
//the object passed in, e, doesn't know what sheet was edited. Really!
var ss = SpreadsheetApp.getActiveSpreadsheet();
var spreadsheetname = ss.getName();
var thesheet = ss.getActiveSheet();
var sheetname = thesheet.getName();
//Tell us what was edited, please.
ss.getSheetByName("Sheet1").getRange("A2:E2").setValues([[ spreadsheetname, sheetname, e.range.rowStart, e.range.columnStart, Utilities.jsonStringify(e)]]);
}
シートを編集するにはどうすればよいですか? これは私の間違いですか、それともバグですか? それとも、イベント処理の方法に欠陥がありますか?