sheetWasEdited()
onEdit トリガーは、実際のユーザーがスプレッドシートを編集するときに機能することを目的としています。最新のものが同じプロジェクトの一部である場合、他の関数から関数を呼び出すだけで、記述したユース ケースを簡単に実装できるはずです。
変更が別のプロジェクト (別のスプレッドシートまたは Web アプリ) から行われた場合は、配置が非常に難しくなります。(それがあなたのユースケースであるかどうか私たちに知らせてください)
あなたのコメントに続いて編集してください:
アイデアは、シートの長さを監視し、値をどこかに (スクリプト プロパティなどに) 保持し、行が追加された場合は関数を呼び出すことです。
この小さなコードでうまくいくはずですlookatsheet()
。反応する必要がある速度に応じて、時々呼び出すようにタイムトリガーを設定する必要があります... 1時間ごとまたは30分ごとは多すぎるべきではないと思います。 .
function lookatsheet(){
var ss = SpreadsheetApp.openById('xxxxxxxxxxxxxxxxxxxxx');// the ID of the SS you want to look at
var sh = ss.getSheets()[0];// first sheet
var lastrow = sh.getLastRow();
var formertest = ScriptProperties.getProperty('lastTest');// recover the value from the last test (will need to get called once to initiate a valid value)
if (formertest < lastrow){
sheetWasEdited(lastrow);// call your function with lastRow as parameter
ScriptProperties.setProperties({'lastTest': lastrow}, true); // store for next time
}
}
function sheetWasEdited(row) { // modified to work with the other function
var sheet = SpreadsheetApp.openById('xxxxxxxxxxxxxxxxxxxxx').getSheets()[0]
var lastRowValues = sheet.getRange(row, 2, 1, 2).getValues()[0];
CgcEmailDatabase.addEmail(now=lastRowValues[0].toString(), email=lastRowValues[1].toString());
}
注: 最初の実行時にメール呼び出しにコメントを付けて、メールの送信を回避すると便利な場合があります (スクリプト プロパティを開始するためだけに)。