Saya ingin mengembangkan skrip yang memungkinkan untuk menerapkan fungsi yang sama di kolom A sambil merujuk ke semua baris di bawah ini (dari A1 hingga A600) yang merupakan Query(Importrange) yang jumlah baris yang akan dimasukkan tidak tetap ( dari 1 hingga 300) dan karenanya harus dimasukkan sebelum menyalin data.

Saya mulai dengan mengembangkan formula di sel A1 yang bekerja sangat baik tetapi itu berarti menyalin blok 600 kali di sel untuk menutupi semua baris:

`={Query(IMPORTRANGE('Master Table Projects'!T503,"Impacted Formula!A5:R1000"),"where Col1 is not Null");Query(IMPORTRANGE('Master Table Projects'!T467,"Impacted Formula!A5:R1000"),"where Col1 is not Null");Query(IMPORTRANGE('Master Table Projects'!T15,"Impacted Formula!A5:R1000"),"where Col1 is not Null")}

Akibatnya, saya harus mengembangkan skrip dengan loop agar terlihat menerapkan rumus ini dari T1 ke T600. Saya mencoba ini:

function myFunction() {
var ui = SpreadsheetApp.getUi();
var ss = SpreadsheetApp.getActiveSpreadsheet();
var sheet = ss.getActiveSheet();
var rangeData = sheet.getDataRange();
var lastColumn = rangeData.getLastColumn();
var lastRow = rangeData.getLastRow();
var searchRange = sheet.getRange(2,2, lastRow-1, lastColumn-1);
  for (r=1; r<100;r++) {
    var sa=(Query(IMPORTRANGE('Master Table Projects'!Tr,"Impacted Formula!A5:R1000"),"where Col1 is not Null")); 
   ss.getRange(r,1).setValue(sa); 
  };

Ini tidak berfungsi karena saya menerima pesan peringatan: "SyntaxError: missing ) setelah daftar argumen (baris 19, file "learnings.gs")"

Saya sama sekali bukan ahli dalam pemrograman tetapi: Saya kira "var sa" saya tidak diatur dengan benar tetapi saya tidak tahu bagaimana memperbaikinya. Tr berarti bagi saya "T1 hingga T600" tetapi kemungkinan besar itu tidak ditulis dengan baik. Bisakah Anda membantu saya dengan mengoreksi baris-baris ini agar berfungsi? Terima kasih banyak sebelumnya

Salam, Isa

0
Isabelle 3 Juli 2020, 12:43

2 jawaban

Asalkan Anda memiliki rumus yang berfungsi, untuk menetapkannya dengan indeks baris dinamis, Anda harus menggabungkannya dengan benar:

  • Saat Anda membuat variabel sa, variabel tersebut dapat terdiri dari referensi ke variabel dan teks lain
  • Teks harus ditetapkan sebagai string dengan membungkusnya = t dalam tanda kutip tunggal atau ganda
  • Jika teks Anda (rumus) sudah berisi beberapa tanda kutip, pastikan untuk mengadaptasi tanda kutip pembungkus luar untuk memastikan pergantian tanda kutip tunggal (') dan ganda (") atau tanda kutip lepas - lihat di sini
  • Untuk rumus, = harus menjadi bagian dari teks
  • Untuk menggabungkan bagian teks dan referensi variabel, gunakan tanda +

Contoh:

function myFunction() {
  for (var r=1; r<100;r++) {
    var sa="=(Query(IMPORTRANGE('Master Table Projects'!T"+r+',"Impacted Formula!A5:R1000"),"where Col1 is not Null"))'; 
    sheet.getRange(r,1).setValue(sa); 
  }
}

Catatan:

  • Ini bukan praktik yang baik untuk menggunakan setValue() di setiap baris, untuk masa mendatang pertimbangkan untuk menyimpan permintaan dalam array dan berikan setelah keluar dari loop for semua nilai sekaligus ke spreadsheet dengan setValues()
  • Periksa kembali apakah rumus Anda benar (IMPORTRANGE mengharapkan URL ke spreadhsset)
0
ziganotschka 3 Juli 2020, 10:35

masukkan deskripsi gambar di sini

@ziganotschka : Saya ingin mendapatkan hasil seperti ini; artinya salinan dari baris yang berbeda, satu di bawah yang lain tanpa data yang tumpang tindih. jadi di baris 1: query importrange Master Table T1 di baris berikutnya yang tersedia (itu tidak perlu baris 2 karena mungkin salinan pertama akan mengambil 5 baris): query importrange Master Table T2 di baris berikutnya yang tersedia : query importrange Master Table T2

0
Isabelle 7 Juli 2020, 15:17