Używam funkcji do zbierania nazw plików adresów URL dyskusyjnych Google za pomocą urządzenia do instalacji ONEDIT (Dzięki sugestii @ Tanaike w tym pytaniu):

function FileName(e) {
    const sheetName = "Página1";
    const range = e.range;
    const sheet = range.getSheet();
    if (!(sheet.getSheetName() == sheetName && range.getColumn() == 2 && range.getRow() > 1)) return;
    const value = range.getValue();
    let res = "";
    try {
      res = DriveApp.getFileById(value).getName();
    } catch(e) {
      res = e.message;
    }
    range.offset(0, 1).setValue(res);
  }

Muszę znaleźć sposób na dostosowanie go i aktywowania spustu w edycji innej komórki, w tym przykładzie krok po kroku:

A) Zmieniam C2 i aktywuje wyzwalacz,

B) Funkcja chwyta identyfikator pliku w B2, identyfikuje plik i umieszcza go w D2.

Oto przykładowy arkusz

EDYTUJ

Tak więc pytanie brzmi: Ten kod powyżej aktywuje wyzwalacz i dostaje identyfikator pliku w tej samej komórce B2. Jak udać się, że aktywuje wyzwalacz Edycja w C2 i uzyskać identyfikator pliku w B2?

1
abutremutante 20 listopad 2020, 23:13

1 odpowiedź

Najlepsza odpowiedź

Wyjaśnienie:

  • Myślę, że twoim celem jest wyzwolenie tej funkcji na edycji w kolumnie C i ustaw wartość w kolumnie D na podstawie wartości w kolumnie B.

  • Jeśli chcesz chwycić zmiany w kolumnie {X0}}, zmodyfikuj pole wyboru Oświadczenie if:

    range.getColumn() == 3

  • Ale ponieważ teraz chcesz uzyskać wartość w kolumnie {X0}}, użyj:

    const value = sheet.getRange(range.getRow(),range.getColumn()-1).getValue()

  • Ta linia range.offset(0, 1).setValue(res) ustawi wartość w kolumnie D.

Rozwiązanie:

function FileName(e) {
    const sheetName = "Página1";
    const range = e.range;
    const sheet = range.getSheet();
    if (!(sheet.getSheetName() == sheetName && range.getColumn() == 3 && range.getRow() > 1)) return;
    const value = sheet.getRange(range.getRow(),range.getColumn()-1).getValue();

    let res = "";
    try {
      res = DriveApp.getFileById(value).getName();
    } catch(e) {
      res = e.message;
    }
    range.offset(0, 1).setValue(res);
  }
1
Mario 20 listopad 2020, 23:30