Довольно новичок в сценарии приложения, так что со мной не обошлось. Написал этот массивный скрипт, потом пошел настраивать его на триггер времени, и он просто отказывается запускаться. Я проследил все, что мог, чтобы хоть что-то заработало, но я даже не могу заставить тост c появляться в минутном интервале.
Это сценарий, который я создал, который я запускаю напрямую, чтобы активировать триггер:
function createTriggers() {
ScriptApp.newTrigger('testTime')
.timeBased()
.everyMinutes(1)
.create();
};
Функция, которую он вызывает, очень проста, я ее много использовал и тоже меняю:
var gSS = SpreadsheetApp.openById("this_1s/the.1d")
function testTime() {
var d = new Date()
var Start = d.getTime();
gSS.toast(Start, "Testing", 30)
};
Итак, как это должно работать, и это произойдет, если я просто вызову функцию testTime напрямую, в рассматриваемой электронной таблице появится небольшое всплывающее окно с тостами, которое останется видимым в течение 30 секунд. Когда я запускаю триггерную функцию createTriggers, ничего не происходит ..
Пожалуйста, помогите! Весь код, который я написал, напрасен, если я не могу заставить его работать самостоятельно ..: (
***** EDIT - 04.08.20 - на основе комментариев **** *
Возможно, это был пример XY, я попытался запустить небольшой сегмент исходного кода, который работает, когда я запускаю его напрямую, и он здесь тоже не работает .. этот фрагмент не имеет интерфейса функций в нем, так что это не должно быть проблемой .. Все, что я сделал, это взял указанную выше функцию триггера и изменил имя на 'testClear', которое вызывает следующие функции:
function testClear(){
sheetVars(1)
clearSheetData(sheetSPChange)
};
function sheetVars(numSprints) {
// returns the global vars for this script
try {
sheetNameSprints = "Name of Sprint Sheet"
sheetNameSPChange = "Name of Story Point Change Sheet"
sheetSprints = gSS.getSheetByName(sheetNameSprints)
sheetSPChange = gSS.getSheetByName(sheetNameSPChange)
arraySprints = iterateColumn(sheetSprints,"sprintIDSorted", 1, numSprints)
}
catch(err) {
Logger.log(err)
};
};
function iterateColumn(sheet, header, columnNum, numRows) {
// Create an array of first column values to iterate through
// numRows is an int, except for the string "all"
var gData = sheet.getDataRange();
var gVals = gData.getValues();
var gLastR = ""
var gArray = []
// check how many rows to iterate
if (numRows == "all") {
gLastR = gData.getLastRow();
}
else {
gLastR = numRows
};
// Iterate through each row of columnNum column
for (i = 1; i < gLastR; i++){
// iterate through
if(gVals[i][columnNum] !== "" && gVals[i][columnNum] !== header){
// push to array
gArray.push(gVals[i][columnNum]);
}
else if (gVals[i][columnNum] == "") {
break
};
};
return gArray
};
function clearSheetData(sheet) {
// Delete all rows with data in them in a sheet
try {
if (!sheet.getRange(sheet.getLastRow(),1).isBlank()){
sheet.getRange(2, 1, sheet.getLastRow()-1, sheet.getLastColumn()-1).clearContent()
Logger.log("Sheet cleared from old data.")
}
else {
sheet.deleteRows(2, sheet.getLastRow()-1)
Logger.log("Sheet rows deleted from old data.")
};
}
catch(err){
Logger.log(err)
emailLogs()
};
};
The ' Функция emailLogs является базовым c MailApp, поэтому я получаю уведомление о проблеме со скриптом:
function emailLogs() {
// Email Nikita the loggs of the script on error
var email = "my work email@jobbie"
var subject = "Error in Sheet: " + gSS.getName()
var message = Logger.getLog()
MailApp.sendEmail(email, subject, message)
};
Благодаря комментарию я обнаружил страницу выполнения !!: D Это была ошибка для отредактированного скрипта.
4 августа 2020 г., 10:48:18 Исключение из ошибки: невозможно вызвать SpreadsheetApp.getUi () из этого контекста. при неизвестной функции