Я записал макрос в Sheets, цель которого - добавить цветовую шкалу с условным форматированием. Это работает нормально, но я получаю два всплывающих окна с надписью "Готово", когда он завершается. Я проследил их до двух других сценариев приложения, которые я использовал в прошлом. (Примечание: это скрипты, а не записанные макросы)
Q. Почему, когда я вызываю макрос с назначенным ему сочетанием клавиш, я также получаю всплывающие окна для других сценариев? Сами сценарии, по-видимому, не работают полностью (поскольку изменяемые диапазоны неизменны).
Это записанный макрос:
function Addcolourscale() {
var spreadsheet = SpreadsheetApp.getActive();
var conditionalFormatRules = spreadsheet.getActiveSheet().getConditionalFormatRules();
conditionalFormatRules.push(SpreadsheetApp.newConditionalFormatRule()
.setRanges([spreadsheet.getActiveRange()])
.whenCellNotEmpty()
.setBackground('#B7E1CD')
.build());
spreadsheet.getActiveSheet().setConditionalFormatRules(conditionalFormatRules);
conditionalFormatRules = spreadsheet.getActiveSheet().getConditionalFormatRules();
conditionalFormatRules.splice(conditionalFormatRules.length - 1, 1, SpreadsheetApp.newConditionalFormatRule()
.setRanges([spreadsheet.getActiveRange()])
.setGradientMinpoint('#57BB8A')
.setGradientMaxpoint('#FFFFFF')
.build());
spreadsheet.getActiveSheet().setConditionalFormatRules(conditionalFormatRules);
conditionalFormatRules = spreadsheet.getActiveSheet().getConditionalFormatRules();
conditionalFormatRules.splice(conditionalFormatRules.length - 1, 1, SpreadsheetApp.newConditionalFormatRule()
.setRanges([spreadsheet.getActiveRange()])
.setGradientMinpoint('#57BB8A')
.setGradientMidpointWithValue('#FFD666', SpreadsheetApp.InterpolationType.PERCENTILE, '50')
.setGradientMaxpoint('#E67C73')
.build());
spreadsheet.getActiveSheet().setConditionalFormatRules(conditionalFormatRules);
};
Это один из сценариев, который создает всплывающее окно из-за его последних двух строк, когда завершается вышеуказанный макрос. Это то, что я адаптировал на онлайн-ресурсе, поэтому я не очень хорошо это знаю.
function CopyClientChannelUseBack(){
/* Edit the vars below this line for your needs */
var sourceSheet = "12 mth Client channel use" ; // Enter the name of the sheet with the source data
var sourceRange = "A19:S29" ; // Enter the range of the cells with the source data
var targetSheet = "12 mth Client channel use" ; // Enter the name of the target sheet
var targetRange = "A20:S30" ; // Enter the range of cells you wish to copy data to. Note this must be same size as source range.
/* No need to edit below this point */
var ss = SpreadsheetApp.getActiveSpreadsheet();
var sheet = ss.getSheetByName(sourceSheet);
var values = sheet.getRange(sourceRange).getValues();
ss.getSheetByName(targetSheet).getRange(targetRange).setValues(values);
SpreadsheetApp.flush()
/* Edit the vars below this line for your needs */
var sourceSheet = "12 mth Client channel use" ; // Enter the name of the sheet with the source data
var sourceRange = "A49:N59" ; // Enter the range of the cells with the source data
var targetSheet = "12 mth Client channel use" ; // Enter the name of the target sheet
var targetRange = "A50:N60" ; // Enter the range of cells you wish to copy data to. Note this must be same size as source range.
/* No need to edit below this point */
var ss = SpreadsheetApp.getActiveSpreadsheet();
var sheet = ss.getSheetByName(sourceSheet);
var values = sheet.getRange(sourceRange).getValues();
ss.getSheetByName(targetSheet).getRange(targetRange).setValues(values);
SpreadsheetApp.flush()
SpreadsheetApp.getUi().alert("Done")
}
Файл манифеста не имеет ссылки на сценарии, только макрос.
{
"timeZone": "Europe/London",
"dependencies": {
},
"exceptionLogging": "STACKDRIVER",
"sheets": {
"macros": [{
"menuName": "Add colour scale",
"functionName": "Addcolourscale",
"defaultShortcut": "Ctrl+Alt+Shift+9"
}]
}
}