请原谅我,如果我的措辞不对,我是Scripts的新手,但是有人给我一个脚本,可以在我拥有的图纸上运行onEdit / Triggers。我还有一个日期/时间戳的onEdit脚本。昨天我让它们全部工作了很短,但是随后新的onEdit触发脚本开始失败。说我有太多的脚本。在触发器上导入的范围具有公式和条件格式。触发阶段1,阶段2,阶段3和PIT代码的事件的单元是数据验证单元。工作表链接和代码在此帖子的底部。
所以我想知道的是:
Sheet链接: 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();
}
第二阶段代码:
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();
}
PIT代码:
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;
}