Возникли проблемы с несколькими скриптами Google Apps на одном листе - PullRequest
0 голосов
/ 20 июня 2019

Я создал два отдельных сценария для выполнения двух отдельных действий на одном листе, и они должны выполняться независимо, но я не могу понять, как связать их оба с одной и той же электронной таблицей, поскольку в списке макросов появляется только один.

Я пытался создать оба сценария с помощью ссылки редактора сценариев на листе, и оба они появились в центре разработчика, но я просто не могу показать, что оба они отображаются в раскрывающемся списке макросов.

Это один сценарий для копирования содержимого исходного листа на целевой лист, который создается как часть этого сценария и прекрасно работает сам по себе.

var ss = SpreadsheetApp.getActive();
var sheetName = ss.getSheetByName("Results");
var CopyNew = function () {  
var nm = ss.getSheetByName("NEW");
if(!nm){
  var newSheet = ss.insertSheet("NEW");
  var sourceRange = sheetName.getRange("A1:N100");
  var targetRange = newSheet.getRange("A1:N100");
  targetRange.setValues(sourceRange.getValues());
  sourceRange.copyTo(targetRange, {formatOnly:true});
    }
}
CopyNew();

Это отдельный скрипт, который должен выполняться после первого скрипта на исходном листе, чтобы очистить определенные столбцы, и опять-таки, он прекрасно работает сам по себе.

function ClearCells() {
var spreadsheet = SpreadsheetApp.getActive();
spreadsheet.getRange('G9:G100').activate();
spreadsheet.getActiveRangeList().clear({contentsOnly: true, 
skipFilteredRows: true});
spreadsheet.getRange('K9:K100').activate();
spreadsheet.getActiveRangeList().clear({contentsOnly: true, 
skipFilteredRows: true});
spreadsheet.getRange('N9:N100').activate();
spreadsheet.getActiveRangeList().clear({contentsOnly: true, 
skipFilteredRows: true});
};

Мне бы хотелось, чтобы оба этих скрипта были доступны в раскрывающемся списке макросов, чтобы я мог запускать их независимо, но отображается только один.

Ответы [ 2 ]

1 голос
/ 20 июня 2019

@ ziganotschka Спасибо за ваш ответ, я понял это с вашим ответом.Это была проблема с самим сценарием.Поскольку вы упомянули, что я импортирую не скрипт, а функцию, он заставил меня взглянуть на функциональную часть, которая была написана таким образом, что запутала Google, я думаю!Я написал это так:

var CopyNew = function () {  

Но теперь я изменил это на это ниже, и это решило проблему.

function CopyNew() {  

Спасибо всем за помощь и предложения, теперь все работает отлично.

0 голосов
/ 20 июня 2019

Когда вы пытаетесь импортировать сценарии в раскрывающийся раздел «Макросы», фактически вы импортируете не сами сценарии, а функцию из сценария.

enter image description here enter image description here enter image description here

Итак, если вы не можете импортировать основную функцию из обоих ваших сценариев в выпадающий раздел - скорее всего, это потому, что функция в обоих ваших сценариях имеет одинаковое имя - myFunction (). Вам просто нужно изменить имя одной из функций.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...