Dapatkan kolom kosong pertama dari baris tersebut, lalu catat baris + kolom sel tersebut

Saya baru mengenal javascript dan editor skrip. Saya telah melangkah cukup jauh dengan menjelaskan logikanya pada diri saya sendiri dan menguraikan semuanya selangkah demi selangkah. Namun ada satu bagian terakhir dari teka-teki yang sepertinya tidak dapat saya pecahkan. Saya ingin skrip pergi ke kolom kosong pertama dari baris 16 dan memberi saya baris + kolom sel tersebut. Semua kode berfungsi, namun, apa yang terjadi ketika sampai ke langkah 5 skrip, adalah kode tersebut menempatkan "berhasil" di kolom kosong terakhir pada baris, bukan yang pertama .

masukkan deskripsi gambar di sini

​​function refreshCell(){
  var app = SpreadsheetApp.openById("14FgHQieAOCko3pwzLSUnO5Ky5EuLN88r5Y4LnuMKREI");
  var sheetName = app.getSheetByName("FinancialGoals");
  var cellContainingFormula = sheetName.getRange("J14");

  /* 1. Clear cell containing formula */
  cellContainingFormula.clear();

  /* 2. auto-run functon refreshCell on the first of the month: edit > project triggers > add new trigger */

  /* 3. Add new formula to cell */
  cellContainingFormula.setValue('=10248-A16');

  /* 4. Add formatting to cell: set background color, textcolor green, text bold, center text */ 
 cellContainingFormula.setBackground('#B7B7B7').setFontColor('#38761d').setHorizontalAlignment('center');

  /* 5. Navigate to the first empty column of row */
   var lastColumn = sheetName.getLastColumn();
   var activeCell = sheetName.getRange(16, lastColumn).activate(); 
   activeCell.setValue("it worked")
}

person natia    schedule 10.06.2020    source sumber
comment
Anda mengatakan /* 5. Navigate to the first empty column of row */ dan I would like for script to go to the first empty column of row 16 juga is that it is placing "it worked" in the last empty column of the row, instead of the first. tidak yakin apa maksudnya. Bagaimana dengan gambar.   -  person Cooper    schedule 11.06.2020
comment
Terima kasih, saya pikir saya sudah melampirkannya, tangkapan layarnya sudah ada sekarang ????   -  person natia    schedule 11.06.2020


Jawaban (1)


Coba ini:

function refreshCell(){
  var ss=SpreadsheetApp.openById("ssid");
  var sh=ss.getSheetByName("FinancialGoals");
  var cellContainingFormula=sh.getRange("J14");
  cellContainingFormula.clear();
  cellContainingFormula.setValue('=10248-A16');
  cellContainingFormula.setBackground('#B7B7B7').setFontColor('#38761d').setHorizontalAlignment('center');
  var col=sh.getRange(16,1,1,sh.getLastColumn()).getValues()[0].reduce(function(a,c,i){if(c=='' && !a.found) {a.col=i+1;a.found=true;}return a;},{col:0,found:false}).col;
  sh.getRange(16,col).setValue("it worked");
}
person Cooper    schedule 10.06.2020
comment
AHHHHHHHH berhasil, berhasil, berhasil! Terima kasih banyak Cooper! Sekarang ia menempatkan data baru di sel kosong berikutnya pada baris tersebut. Oke, saya pergi ke Google sekarang untuk mencoba dan menjelaskan kepada diri saya sendiri mengapa kode itu berfungsi, haha, baris kode kedua dari terakhir itu.... tidak familier. Terima kasih banyak atas bantuan Anda dalam hal ini! - person natia; 11.06.2020
comment
Metode pengurangan sangat berguna. Sebagai petunjuk pertimbangkan bahwa dalam kasus ini akumulator diinisialisasi ke suatu objek. - person Cooper; 11.06.2020