Недавно мы сменили пароль Google и повторно авторизовали все наши скрипты, кроме этого.
Этот скрипт единственный, который не авторизуется. Запуск его из редактора не требует авторизации, но при выполнении веб-приложения по-прежнему отображается ошибка «Вы должны предоставить авторизацию для запуска этого приложения».
Я предоставляю ссылку, пожалуйста, дайте мне знать, что еще я могу сделать.
Вот код ниже. Он извлекает «шоу», которые прошли, и помещает их в ежемесячную электронную таблицу (за каждый месяц), удаляя их из рабочей электронной таблицы, поскольку другие скрипты Google становятся медленными, когда в рабочей электронной таблице слишком много строк. (Он также опирается на другой сценарий под названием «Глобальный»).
var MAX_PROCESSED = 100;
function doGet(e) {
var app = UiApp.createApplication();
var start_screen = app.createVerticalPanel();
var wait_screen = app.createVerticalPanel().setId("screen");
var gig_sheet = Global.getGigsSheet();
var max_rows = gig_sheet.getLastRow();
var max_cols = gig_sheet.getLastColumn();
var col_descriptions = gig_sheet.getRange(1, 1, 1, max_cols).getValues()[0];
var col_ids = gig_sheet.getRange(2, 1, 1, max_cols).getValues()[0];
var cur_date = new Date();
var archive_filename = "Database archive "+cur_date.toDateString();
var old_file = SpreadsheetApp.create(archive_filename, 0, max_cols);
var old_sheet = old_file.getActiveSheet();
old_file.renameActiveSheet("Database");
old_sheet.appendRow(col_descriptions);
old_sheet.appendRow(col_ids);
SpreadsheetApp.flush();
var message = (max_rows-2)+ " gigs to examine. ";
if(max_cols > 500)
message+= "Hmm... This may take a while. ";
message+="<br/>New archive database ready \""+archive_filename+"\". Press start to begin.";
var id_string = old_file.getId();
Global.log("doc id:"+id_string);
var doc_id_widget = app.createHidden("doc_id", id_string);
var row_pos_widget = app.createHidden("row_pos", 3);
var old_total_widget = app.createHidden("old_total", max_rows);
var start_button = app.createButton("Start");
start_button.addClickHandler(app.createClientHandler().forTargets(start_screen).setVisible(false).forTargets(wait_screen).setVisible(true));
start_button.addClickHandler(app.createServerHandler('processGigs').addCallbackElement(doc_id_widget).addCallbackElement(row_pos_widget).addCallbackElement(old_total_widget));
start_screen.add(app.createHTML(message));
start_screen.add(start_button);
wait_screen.add(app.createHTML("Working... should take about 60 seconds. If it goes longer than 6 minutes, Google will display an error anyway."));
wait_screen.setVisible(false);
app.add(start_screen);
app.add(wait_screen);
return app;
}
function test()
{
var test;
}
function processGigs(e){
Global.log("processGigs");
var app = UiApp.getActiveApplication();
var row_pos = parseInt(e.parameter.row_pos);
var id_string = e.parameter.doc_id;
var old_total = e.parameter.old_total;
var screen = app.getElementById("screen");
screen.setVisible(false);
Global.log("Loading row_pos:"+row_pos+", raw data:"+e.parameter.row_pos);
Global.log("Spreadsheet ID:"+id_string);
var gig_sheet = Global.getGigsSheet();
var max_rows = gig_sheet.getLastRow();
var max_cols = gig_sheet.getLastColumn();
var col_descriptions = gig_sheet.getRange(1, 1, 1, max_cols).getValues()[0];
var col_ids = gig_sheet.getRange(2, 1, 1, max_cols).getValues()[0];
var old_file = SpreadsheetApp.openById(id_string);
var old_sheet = old_file.getActiveSheet();
var cur_date = new Date();
var existing_date;
var existing_fee;
var archive_count= 0;
var row;
var range;
var item;
var items_processed = 0;
while (items_processed < MAX_PROCESSED && row_pos <= max_rows){
Global.log("row_pos:"+row_pos+", max_rows:"+max_rows+", max_cols:"+max_cols);
range = gig_sheet.getRange(row_pos, 1, 1, max_cols);
row = range.getValues()[0];
item = Global.arrayToObject(col_ids, row, false);
Global.parseValuesOnObject(col_ids, item, false);
if((item.paid >= item.fee && item.date < cur_date) || item.status == "Cancelled"){
old_sheet.appendRow(row);
gig_sheet.deleteRows(row_pos,1);
max_rows--;
archive_count++;
}else{
row_pos++;
}
items_processed++;
}
var work_screen = app.createVerticalPanel();
var wait_screen = app.createVerticalPanel().setId("screen").setVisible(false);
var message_widget = app.createHTML();
work_screen.add(message_widget);
wait_screen.add(app.createHTML("Working... should take about 60 seconds. If it goes longer than 6 minutes, Google will display an error anyway."));
Global.log("Saving row_pos:"+row_pos);
var doc_id_widget = app.createHidden("doc_id", id_string);
var row_pos_widget = app.createHidden("row_pos", row_pos);
var old_total_widget = app.createHidden("old_total", old_total);
var start_button = app.createButton("Continue");
start_button.addClickHandler(app.createClientHandler().forTargets(work_screen).setVisible(false).forTargets(wait_screen).setVisible(true));
start_button.addClickHandler(app.createServerHandler('processGigs').addCallbackElement(doc_id_widget).addCallbackElement(row_pos_widget).addCallbackElement(old_total_widget));
//new_sheet.getRange(1, new_data.length, 1, new_data[0].length).setValues(new_data);
//old_sheet.getRange(1, old_data.length, 1, old_data[0].length).setValues(old_data);
var message = archive_count + " gigs archived.</br>";
if(row_pos < max_rows){
message += "Process limit reached. "+(max_rows - row_pos)+" to go, so click Continue to keep trying.";
work_screen.add(start_button);
}else{
message += "End of records reached, none left to archive. You can close this window now.";
}
//message +="<br/>row_pos:"+row_pos+", max_rows:"+max_rows;
message_widget.setHTML(message);
app.add(work_screen);
app.add(wait_screen);
return app;
}