web-dev-qa-db-ja.com

グーグルシートのグーグルスクリプト内の特定のシートでonedit()トリガーを使用する

Onedit()によってトリガーされたスクリプトを、多くのシートの1つだけに対して実行する必要があります。

私は次のことを試しましたが、現在、スクリプトを目的のシート(「インベントリ」)だけで機能させることができません。これは、知っている人にとっては非常に簡単なことです。

function onEdit(e) {
    var range = e.range;
    if(range.getSheetName() == "Inventory") {
        if(range.getValue() == "notify") {
            range.setBackgroundColor('red');
            var productname = range.offset(0,-3).getValue();
            var productinventory = range.offset(0,-2).getValue();
            var message = "Product variant " + productname + " has dropped to " + productinventory;
            var subject = "Low Stock Notification";
            var emailAddress = "[email protected]";
            MailApp.sendEmail(emailAddress, subject, message);
            range.offset(0,1).setValue("notified");
        }
    }
}

ありがとう!

7
adamsportstech

このようなものを試して、それが機能するかどうかを確認してください。

function onEdit(e) {
    var activeSheet = e.source.getActiveSheet();
    var range = e.range;
    if (activeSheet.getName() !== "Inventory" || e.value !== "notify") return;
    range.setBackgroundColor('red');
    var productname = range.offset(0, -3).getValue();
    var productinventory = range.offset(0, -2).getValue();
    var message = "Product variant " + productname + " has dropped to " + productinventory;
    var subject = "Low Stock Notification";
    var emailAddress = "[email protected]";
    MailApp.sendEmail(emailAddress, subject, message);
    range.offset(0, 1).setValue("notified");
}

これで、アクティブなシートが「在庫」でない場合、または編集された値が「通知」でない場合、スクリプトは終了します。

13
JPV

これを試してみることをお勧めします:

range.getSheet().getSheetName() == "Inventory"
3
Eun Kyung Lee