![](/img/trans.png)
[英]use onedit() trigger on a specific sheet within google scripts for google sheets
[英]How can I combine multiple onEdit/Trigger Scripts in a Google Sheet?
如果我的措辭不正確,請原諒我,我是腳本的新手,但有人為我制作了一個腳本來運行我擁有的工作表的 onEdit/Triggers。 我還有一個用於日期/時間戳的 onEdit 腳本。 昨天我讓它們都簡單地工作,但隨后新的 onEdit 觸發器腳本開始失敗; 說我有太多的腳本。 在觸發器上導入的范圍具有公式和條件格式。 觸發階段 1、階段 2、階段 3 和 PIT 代碼事件的單元格是數據驗證單元格。 工作表鏈接和代碼位於這篇文章的底部。
所以我想知道的是:
工作表鏈接: https : //docs.google.com/spreadsheets/d/1KYSiVggIm7KIKxpJMnUhldrzsIaETCqyjOWJ1a9k1cI/edit?usp=sharing
日期/時間戳代碼:
function onEdit(e) {
const sheetNameFellowshipTracking = 'Fellowship Tracking';
const dateCol = 43;
// Get edited sheet.
const range = e.range;
const sheet = range.getSheet();
if (sheet.getName() === sheetNameFellowshipTracking)
{
// Get edited row.
const row = range.getRow();
if (row >= 4 && row <= 28)
{
// Get current time.
const time = Utilities.formatDate(new Date(), "GMT-05:00", "MM/dd, HH:mm");
// Set edited datetime.
const dateModifiedRange = sheet.getRange(row, dateCol);
dateModifiedRange.setValue(time);
}
}
}
第一階段代碼:
function onMyEdit(e) {
var sh=e.range.getSheet();
if(sh.getName()!='Fellowship Tracking')return;
if(e.range.columnStart==7 && e.range.rowStart==31 && e.value=='Stage 1') {
var srcrg=e.source.getSheetByName('ALL Stages+Pit').getRange('B3:G21');
var desrg=sh.getRange('C33');
srcrg.copyTo(desrg);
}
}
function createOnMyEditTrigger() {
var ss=SpreadsheetApp.getActive();
ScriptApp.newTrigger('onMyEdit').forSpreadsheet(ss.getId()).onEdit().create();
}
階段 2 代碼:
function onMyEdit(e) {
var sh=e.range.getSheet();
if(sh.getName()!='Fellowship Tracking')return;
if(e.range.columnStart==7 && e.range.rowStart==31 && e.value=='Stage 2') {
var srcrg=e.source.getSheetByName('ALL Stages+Pit').getRange('H3:M21');
var desrg=sh.getRange('C33');
srcrg.copyTo(desrg);
}
}
function createOnMyEditTrigger() {
var ss=SpreadsheetApp.getActive();
ScriptApp.newTrigger('onMyEdit').forSpreadsheet(ss.getId()).onEdit().create();
}
第 3 階段代碼:
function onMyEdit(e) {
var sh=e.range.getSheet();
if(sh.getName()!='Fellowship Tracking')return;
if(e.range.columnStart==7 && e.range.rowStart==31 && e.value=='Stage 3') {
var srcrg=e.source.getSheetByName('ALL Stages+Pit').getRange('N3:S21');
var desrg=sh.getRange('C33');
srcrg.copyTo(desrg);
}
}
function createOnMyEditTrigger() {
var ss=SpreadsheetApp.getActive();
ScriptApp.newTrigger('onMyEdit').forSpreadsheet(ss.getId()).onEdit().create();
}
坑代碼:
function onMyEdit(e) {
var sh=e.range.getSheet();
if(sh.getName()!='Fellowship Tracking')return;
if(e.range.columnStart==7 && e.range.rowStart==31 && e.value=='PIT') {
var srcrg=e.source.getSheetByName('PIT Sheet').getRange('B5:F17');
var desrg=sh.getRange('C33');
srcrg.copyTo(desrg);
}
}
function createOnMyEditTrigger() {
var ss=SpreadsheetApp.getActive();
ScriptApp.newTrigger('onMyEdit').forSpreadsheet(ss.getId()).onEdit().create();
}
function onMyEdit(e) {
const sh=range.getSheet();
if(sheet.getName()=="Fellowship Tracking" && e.range.rowStart>=4 && e.range.rowStart<=28) {
const time=Utilities.formatDate(new Date(), "GMT-05:00", "MM/dd, HH:mm");
sh.getRange(e.range.rowStart,43).setValue(time);
}
if(sh.getName()=='Fellowship Tracking' && e.range.columnStart==7 && e.range.rowStart==31 && e.value=='Stage 1') {
const srcrg=e.source.getSheetByName('ALL Stages+Pit').getRange('B3:G21');
const desrg=sh.getRange('C33');
srcrg.copyTo(desrg);
}
if(sh.getName()=='Fellowship Tracking' && e.range.columnStart==7 && e.range.rowStart==31 && e.value=='Stage 2') {
const srcrg=e.source.getSheetByName('ALL Stages+Pit').getRange('H3:M21');
const desrg=sh.getRange('C33');
srcrg.copyTo(desrg);
}
if(sh.getName()=='Fellowship Tracking' && e.range.columnStart==7 && e.range.rowStart==31 && e.value=='Stage 3') {
const srcrg=e.source.getSheetByName('ALL Stages+Pit').getRange('N3:S21');
const desrg=sh.getRange('C33');
srcrg.copyTo(desrg);
}
if(sh.getName()=='Fellowship Tracking' && e.range.columnStart==7 && e.range.rowStart==31 && e.value=='PIT') {
const srcrg=e.source.getSheetByName('PIT Sheet').getRange('B5:F17');
const desrg=sh.getRange('C33');
srcrg.copyTo(desrg);
}
}
更復雜的觸發器創建函數。
function createTrigger() {
//guarantees that you dont create a trigger for a function if there already is one.
if(!isTrigger('onMyEdit')) {
ScriptApp.newTrigger('onMyEdit').forSpreadsheet(SpreadsheetApp.getActive().getId()).onEdit().create();
}
}
function isTrigger(funcName){
var r=false;
if(funcName){
var allTriggers=ScriptApp.getProjectTriggers();
for(var i=0;i<allTriggers.length;i++){
if(funcName==allTriggers[i].getHandlerFunction()){
r=true;
break;
}
}
}
return r;
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.