HeJ小鼠! 我有一个应该在onEdit上触发的脚本。 onEdit()作为一个简单的触发器对我来说不是一个选项,因为脚本需要授权。使用编辑器设置可安装触发器时,仅在手动定义特定变量时触发触发器,而在使用数组定义时不触发触发器。 因为我不知道问题出在哪里(我试图逐个注释掉代码,但是当它转到最后一部分时它总是不起作用。
function myFunction() {
//Source Sheet for different sheets
var ss = SpreadsheetApp.getActiveSpreadsheet();
var activeSheet = ss.getActiveSheet();
var activeRange = ss.getActiveRange();
var activeRow = activeRange.getRowIndex();
var CategoryValues = ss.getSheetValues(activeRow, 4, 1, 14);
var ID = activeSheet.getRange(activeRow,2).getValue();
var red = '#e06666'
// Defining the sourceWeekNumber in the sourceSheet with a while loop
var sourceWeeks = activeSheet.getRange(1,1,activeRow).getValues();
sourceWeeks.reverse();
var sourceWeekColor = activeSheet.getRange(1,1,activeRow).getBackgrounds();
sourceWeekColor.reverse();
var sourceWeekNumber = [];
var sourceWeekIndex=1;
while (sourceWeekColor[sourceWeekIndex-1]!=red) {
if (sourceWeekColor[sourceWeekIndex]==red) {
sourceWeekNumber.push(sourceWeeks[sourceWeekIndex])
}
sourceWeekIndex++;
}
//Target sheet is always mastersheet
var ts = SpreadsheetApp.openById('ID').getSheetByName('mastersheet');
//Finding the right spot in mastesheet
//Validate the weeknumber
var validWeek = ts.getRange(2, 1, ts.getLastRow()).getValues();
var rowIndex = [];
//-----> var sourceWeekNumber = 'v50'; <-----
// When defining this variable manually, onEdit works fine.
// When defining sourceWeek with the while loop above, the onEdit does not trigger.
// Find the right week and it's row in the mastersheet
var validWeekIndex = 1;
while (validWeek[validWeekIndex] != sourceWeekNumber) {
if (validWeek[validWeekIndex] == sourceWeekNumber) {
var validID = ts.getRange(validWeekIndex+3,2, ts.getLastRow()).getValues();
rowIndex.push(validWeekIndex);
}
validWeekIndex++;
}
}
我尝试了不同的东西,总是使用Logger.log()或Browser.msgBox()来尝试识别问题。任何想法或解决方法?我已经坚持了3天,现在找不到任何解决方案。 我也准备了样本表,如果需要,我可以编辑它。 提前谢谢!
编辑: 以下是样本表的链接:https://docs.google.com/spreadsheets/d/1xCZur6gpfsQFPtwKcTl0XPPfG8zlTqGVlm1GZZ8X1xM/edit?usp=sharing
答案 0 :(得分:0)
我明白了。 这当然不是触发器,但是让我认为它的不同因素是:
编辑:对于将来的引用,我只是使用sourceWeekNumber.toString()来使它与另一个数组匹配,比较一个字符串而不是数组中的对象。