Apa karakteristik penyegaran dari fungsi Impor Google Spreadsheet?


8

Data yang diimpor tidak selalu terbarui dengan halaman sumber saat saya memuat spreadsheet. Ketika ini terjadi, refresh F5 tidak membantu. Ctl-F5 juga tidak. Rupanya ada semacam caching yang terjadi.

Saya berpikir bahwa mereka mungkin membatasi mengambil URL ketika saya mencoba untuk menyegarkan terlalu sering - seperti ketika saya secara aktif memodifikasi spreadsheet saya.

Referensi dokumen : http://docs.google.com/support/bin/answer.py?answer=75507


1
Apakah Anda mencoba hack Chris?
Jacob Jan Tuinstra

Jawaban:


5

Sesuai utas Forum Google Documents ini , data harus diperbarui setiap jam

Di utas itu, sebuah poster menyarankan untuk menambahkan querystring acak ke URL yang ingin Anda hapus -

Saya menggunakan solusi sederhana untuk menambahkan parameter yang diperbarui setiap menit.

Panggilan fungsi adalah: = ImportHtml ("http://www.fifa.com/worldcup/standings/index.html?" & H81; "table"; 4)

Formula dalam H81 adalah: = Menit (Sekarang ())

Ini berguna bagi saya.


2
Benar-benar bagus :)
Lipis

1
Menarik kata mereka setiap jam. Saya sepertinya mendapatkan data instan dengan setiap pemuatan halaman. Itu sampai menolak. Mungkin penundaan 1 jam dimulai. Tapi apa rima atau alasan pengunciannya. Saya akan mencoba retas Anda ketika itu terjadi. Terima kasih.
Chris Noe

1
Saat ini, rumus yang diusulkan mengembalikan "Kesalahan: Fungsi ini tidak diizinkan untuk merujuk sel dengan SEKARANG (), RAND (), atau RANDBETWEEN ()"
Rubén

4

Jawaban singkat

Anda benar, fungsi impor memperbarui hasilnya pada interval tertentu.

Penjelasan

Dari Ubah lokal, zona waktu, perhitungan ulang, dan bahasa spreadsheet , artikel bantuan dari dokumentasi resmi,

Catatan: Fungsi data eksternal dihitung ulang pada interval berikut:

  • ImportRange: 30 menit
  • ImportHtml, ImportFeed, ImportData, ImportXml: 1 jam
  • GoogleFinance: 2 menit

Layak untuk mengatakan bahwa rumus dihitung ulang ketika argumennya berubah, jadi kita bisa menggunakan ini untuk memaksa penyegaran data yang diimpor.

Penanganan masalah

Salah satu cara untuk memaksa penghitungan ulang formula dengan fungsi impor adalah dengan menyatukan ke URL parameter deterministik tetapi tidak berbahaya.

Contoh

Pada contoh berikut, "#rev =" & A2 ditambahkan ke URL asli

A1: https://en.wikipedia.org/wiki/List_of_gravitationally_rounded_objects_of_the_Solar_System
A2: 1
A3: 4
A4:=IMPORTHTML(A1&"#rev="&A2,"table",A3)

Setiap kali salah satu nilai atau A1, A2, atau A3 berubah, rumus akan dihitung ulang. Kita bisa mengubah nilai A2 menjadi "memaksa" penyegaran tabel 4 dari URL di A1.

Interval penyegaran waktu kustom untuk fungsi impor

Untuk memiliki interval penyegaran khusus untuk fungsi impor, gunakan skrip pemicu berbasis-waktu untuk memperbarui parameter URL yang deterministik tetapi tidak berbahaya.

/**
 *
 * Updates at the interval set in the time driven trigger configuration
 * a cell value to be used as a deterministic bu unnicouus URL parameter 
 *
 */
function forceRefresh() {
  //Cell addrees of the deterministic but unnicouos URL parameter
  var reference = 'Sheet1!A2';   
  var rng = SpreadsheetApp.getActiveSpreadsheet().getRange(reference);
  rng.setValue(rng.getValue()+1);
}

Referensi


0

Alternatif lain yang tidak bergantung pada modifikasi tautan:

= if (Menit (Sekarang ()) = Menit (Sekarang ()), ImportHtml (" http://www.fifa.com/worldcup/standings/index.html ?"; "table"; 4), "")

Karena Minute(Now())=Minute(Now())selalu benar, if akan selalu mengembalikan ImportHtml


Bagaimana Anda tahu bahwa data yang diambil adalah versi terakhir dan bukan versi yang di-cache?
Rubén

-1

Klik File> Pengaturan Spreadsheet ... dan periksa kedua sheet berada di Lokal yang sama dan jika ada respons dari Jotforms, tetapkan juga Locale yang sama di sana.


-2

Paksa penghitungan ulang importrange dengan mengembalikan formula sel

Yg dibutuhkan:

Data yang Diimpor - Target Anda di mana semuanya akan disalin.

Impor Konfigurasi Data - Memiliki bidang-bidang berikut:

+ --------------------------------------------- + --- ----------------------------- +
| A | B |
+ --------------------------------------------- + --- ----------------------------- +
| Impor Data dari Spreadsheet dengan kunci: | kunci |
| Impor Data dari Spreadsheet di antara rentang: | A: AA |
| Kolom pilih Data yang Diimpor: | PILIH * |
| Kriteria Data yang Diimpor: | WHERE Col2 berisi 'XYZ' |
| Data yang Diimpor harus dengan dipesan oleh kolom: | ORDER OLEH Col2 |
+ --------------------------------------------- + --- ----------------------------- +

Naskah:

function onOpen() {
try {
var ss = SpreadsheetApp.getActiveSpreadsheet();
}
catch(err)
{
Browser.msgBox(err);
}

var configsheet = ss.getSheetByName("Imported Data Config");

var configkey = configsheet.getRange("B1").getValue();
var configrange = configsheet.getRange("B2").getValue();
var configselect = configsheet.getRange("B3").getValue();
var configwhere = configsheet.getRange("B4").getValue();
var configorderby = configsheet.getRange("B5").getValue();

var importedsheet = ss.getSheetByName("Imported Data");
importedsheet.getRange("A1").setValue('=QUERY(IMPORTRANGE("' + configkey + '","' + configrange + '"),"' + configselect + ' ' + configwhere + ' ' + configorderby + '")');

SpreadsheetApp.flush();

// Solution of sourcecode is: http://stackoverflow.com/questions/13631584/how-can-i-force-a-recalculation-of-cell-using-importrange-function-in-a-google-s
// OnOpen Trigger: https://developers.google.com/apps-script/understanding_triggers
// Active Spreadsheet solution: https://productforums.google.com/forum/#!topic/docs/XIY0WNX0uL8

Browser.msgBox("Sync Complete!");
}

Ini memungkinkan Anda untuk mengubah formula tanpa mengedit skrip, dan membuatnya lebih mudah untuk mentransfer skrip ke berbagai lembar.

CATATAN: Ini tidak lagi diperlukan dalam Lembar Google Baru yang dirilis pada Mei 2014.


3
Terima kasih sudah memposting. Anda tampaknya menambahkannya ke beberapa pertanyaan di SE. Apakah ini benar-benar membantu OP?
Jacob Jan Tuinstra

-3

Menit sekarang berfungsi dengan sangat baik (dan Anda bisa memasukkannya ke dalam rumus daripada merujuk sel).

Namun, dengan beberapa URL itu tidak berfungsi dan tampaknya mengubah tautan itu sendiri dan mungkin merujuk lembar lain.

Saya tidak akan spesifik, tetapi tautan yang berakhir misalnya di:

.....ranking?ranking=xp_total&table=0"&Minute(Now()),"table",4)

akan mengacaukan tautan itu sendiri. Bukan solusi bukti lengkap tetapi masih berfungsi untuk mungkin 90% dari tautan yang digunakan orang.


2
Saat ini, Google Sheets tidak mengizinkan penggunaan fungsi non-deterministik pada fungsi impor.
Rubén
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.