Скрипт для создания заметок в нескольких выпадающих списках - PullRequest
0 голосов
/ 12 апреля 2020

Я работал над сценарием (любезно поддерживаемым @Tanaike), который позволяет мне отображать заметку, когда я выбираю определенную информацию из выпадающего списка в Google Sheets. Сценарий, который я использовал, подробно описан ниже:

function onEdit(e) {
  const range = e.range;
  const sheetNames = ["01", "02", "03", "04", "05", "06", "07", "08", "09", "10", "11", "12", "14", "15", "17", "20", "23", "24", "25", "26", "27", "28", "31", "33", "35", "37", "40", "41", "42", "43", "44", "45", "46", "47", "50", "52", "55", "56", "57", "58", "59", "60", "66/0", "66/1", "66/2", "66/3", "66/4", "66/5", "66/6", "66/7", "66/8", "66/9", "67", "68", "69", "70", "71", "73", "76", "77", "81", "82", "83", "84", "85", "86", "87", "88", "89", "90", "91", "92",,,];
      if (sheetNames.some(s => range.getSheet().getSheetName() == s) && range.columnStart == 5) {
  const object = {
      AVD: "AV Dawson Middlesbrough",
      BA: "Basford Hall, Crewe (FLR)",
      BH: "Barrow Hill Roundhouse",
      BKR: "Bo'ness & Kinneil Railway",
      BN: "Bounds Green (LNER)",
      CD: "Crewe Diesel (Locomotive Storage Ltd)",
      CE: "Crewe Electric TMD",
      CF: "Cardiff Canton",
      CFT: "Cardiff Tidal",
      ChaR: "Chasewater Railway",
      CPRR: "Chinoor & Princes Risborough Railway",
      CZ: "Central Rivers (Bombardier)",
      DRM: "Doncaster Royal Mail Terminal",
      EH: "Eastleigh (Arriva Traincare)",
      EHY: "Eastleigh East Yard",
      ELY: "Ely Papworth Sidings",
      EML: "EMD Longport",
      FX: "Felixstowe Docks",
      HT: "Heaton, Newcastle",
      IL: "Ilford (Greater Anglia)",
      LA: "Laira (Great Western)",
      LB: "Loughborough Brush Traction",
      LD: "Leeds Midland Road (FLR)",
      LE: "Landore (Great Western)",
      LM: "Long Marston",
      LR: "Leicester L.I.P (UKRL)",
      NA: "Newton Aycliffe (Hitachi)",
      NC: "Norwich Crown Point",
      NM: "Nottingham Eastcroft",                
      PG: "Peterborough (GBRf)",
      PM: "Bristol St Phillips Marsh",
      RR: "Roberts Road, Doncaster",
      SZ: "Southampton Maritime (FLR)",
      TO: "Toton (DBC)",
      TW: "Tonbridge West Yard",                
      TY: "Tyne Yard",
      WB: "Wembley (Alstom)",
      WEN: "Wensleydale Railway",
      WI: "Wishaw",
      ZB: "Doncaster Wabtec",
  };
   const v = range.getValue();
      range.setNote(v in object ? object[v] : "");
    }     

}




В основном этот сценарий работает на всех листах, которые я назвал, и когда я выбираю одну из аббревиатур в раскрывающемся списке (в column E), Затем автоматически появляется заметка с полной детализацией ie. Если я выберу «AVD» из выпадающего меню, появится заметка с надписью «AV Dawson Middlesbrough».

Это замечательно и работает именно так, как я хочу. Тем не менее, я теперь wi sh, чтобы расширить это на другие столбцы, где я использую сокращенные сокращения в раскрывающемся списке, и поэтому я также настроил следующий сценарий:

function onEdit(e) {
  const range = e.range;
  const sheetNames = ["01", "02", "03", "04", "05", "06", "07", "08", "09", "10", "11", "12", "14", "15", "17", "20", "23", "24", "25", "26", "27", "28", "31", "33", "35", "37", "40", "41", "42", "43", "44", "45", "46", "47", "50", "52", "55", "56", "57", "58", "59", "60", "66/0", "66/1", "66/2", "66/3", "66/4", "66/5", "66/6", "66/7", "66/8", "66/9", "67", "68", "69", "70", "71", "73", "76", "77", "81", "82", "83", "84", "85", "86", "87", "88", "89", "90", "91", "92",,,];
      if (sheetNames.some(s => range.getSheet().getSheetName() == s) && range.columnStart == 2) {
  const object = {
      ELR: "East Lancashire Railway",
      HST: "Heritage Shunters Trust",

  };
   const v = range.getValue();
      range.setNote(v in object ? object[v] : "");
    }     

}

Этот сценарий должен работать во всех те же листы, что и в первом скрипте, но я требую, чтобы это работало в column B электронной таблицы, которая состоит из разных данных, как видно из приведенного выше скрипта. Опять же, в качестве примера, я требую, чтобы это работало так, чтобы, когда я выбираю «HST» из выпадающего меню, в этой ячейке появлялась автоматическая заметка c с надписью «Heritage Shunters Trust». Опять же, я смог заставить этот сценарий работать так, как мне нужно.

Однако проблема, с которой я столкнулся сейчас, заключается в том, что я не могу заставить оба сценария работать одновременно. Таким образом, с новым сценарием для column B (2-й в моем вопросе) сценарий для column E больше не работает.

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

1 Ответ

1 голос
/ 13 апреля 2020

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

Следовательно, Вы можете попробовать переименовать вторую функцию как onEdit2.

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