Jak ustawić wartość na komórkę w Arkuszach Google za pomocą Apps Script?


140

Chcę ustawić tekst lub liczbę w Arkuszu Google ze skryptu.

Chcę ustawić Hellolub numerować 9w komórce F2. Jak dotąd znalazłem ten kod:

SpreadsheetApp.getActiveRange().setValue('hello');

ale to nie określa, która komórka.


6
czy mogę zasugerować, abyś przeczytał podstawy Appscript, wypróbowując samouczki?
Serge rozpoczyna

Odpowiedzi:


224

Poniższy kod robi to, co jest wymagane

function doTest() {
  SpreadsheetApp.getActiveSheet().getRange('F2').setValue('Hello');
}

2
jak getRange z liczbami? jakie są współrzędne komórki c2?
JuanPablo

5
C2 to trzecia kolumna w drugim rzędzie, więc >> getRange (2,3) >> getRange (row, col)
Serge insas

Cześć, czy teraz, jak uzyskać numer wiersza i kolumny bieżącej komórki? Jak mogę ustawić wartość dla bieżącej komórki?
Charles Chow

@CharlesChow, przepraszam, ale nie jestem już zaangażowany w rozwój GAS. Zapoznaj się z tym i tym elementem pomocy. Myślę, że mogliby pomóc.
megabyte1024

1
@CharlesChow Możesz użyć SpreadsheetApp.getActiveSheet (). GetActiveCell (). GetRow () i SpreadsheetApp.getActiveSheet (). GetActiveCell (). GetColumn ()
Augustine C

43

Użyj setValuemetody Rangeclass, aby ustawić wartość konkretnej komórki.

function storeValue() {
  var ss = SpreadsheetApp.getActiveSpreadsheet();
  // ss is now the spreadsheet the script is associated with
  var sheet = ss.getSheets()[0]; // sheets are counted starting from 0
  // sheet is the first worksheet in the spreadsheet
  var cell = sheet.getRange("B2"); 
  cell.setValue(100);
}

Możesz także zaznaczyć komórkę za pomocą numerów wierszy i kolumn.

var cell = sheet.getRange(2, 3); // here cell is C2

Możliwe jest również ustawienie wartości wielu komórek jednocześnie.

var values = [
  ["2.000", "1,000,000", "$2.99"]
];

var range = sheet.getRange("B2:D2");
range.setValues(values);

16

Rozwiązanie : SpreadsheetApp.getActiveSheet().getRange('F2').setValue('hello')

Wyjaśnienie:

Ustawienie wartości w komórce w arkuszu kalkulacyjnym, do której dołączony jest skrypt

SpreadsheetApp.getActiveSpreadsheet().getSheetByName(SHEET_NAME).getRange(RANGE).setValue(VALUE);

Ustawienie wartości w komórce w aktualnie otwartym arkuszu, do której jest dołączony skrypt

SpreadsheetApp.getActiveSpreadsheet().getActiveSheet().getRange(RANGE).setValue(VALUE);

Ustawianie wartości w komórce w jakimś arkuszu kalkulacyjnym, do którego NIE jest dołączony skrypt (znana nazwa arkusza docelowego)

SpreadsheetApp.openById(SHEET_ID).getSheetByName(SHEET_NAME).getRange(RANGE).setValue(VALUE);

Ustawienie wartości w komórce w jakimś arkuszu kalkulacyjnym, do którego NIE jest dołączony skrypt (znana pozycja arkusza docelowego)

SpreadsheetApp.openById(SHEET_ID).getSheets()[POSITION].getRange(RANGE).setValue(VALUE);

To są stałe, musisz je sam zdefiniować

SHEET_ID

SHEET_NAME

POSITION

VALUE

RANGE

Przez skrypt dołączony do arkusza rozumiem, że skrypt rezyduje w edytorze skryptów tego arkusza. Nie dołączony oznacza, że ​​nie znajduje się w edytorze skryptów tego arkusza. Może być w dowolnym innym miejscu.


Cześć - Jeśli chodzi o to, który „Skrypt jest aktywny”, mam formułę INDEKS / Tabela, którą chcę w komórce D18 w Worsheet „FianceIndex”. Kiedy wykonuję formułę w samej komórce, nie jest ona automatycznie odświeżana - więc pomyślałem, że umieść w skrypcie i zastosuj wyzwalacz. Problem z getActiveSheet () polega na tym, że każdy inny arkusz go otrzymuje. Jak to naprawić? Próbowałem „getSheetName” SpreadsheetApp.getActiveSheet (). GetSheetName ('FinanceIndex'). GetRange ('D18'). SetValue ('= Dollar (Index (ImportHTML (" apmex.com/silver-price","table",8 ), 2,2)) '' ); Utknąłem
Robert Long

1
Spróbuj SpreadsheetApp.getActiveSpreadsheet().getSheetName('FinanceIndex'). W przeciwnym razie zadaj nowe pytanie stackoverflow.com/help/how-to-ask
Umair Mohammad

1
To było to Umair! Dziękuję
Robert Long
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.