0
我想知道是否可以編寫Google Apps腳本,以便在Google電子表格中觸發每日importhtml。例如,假設我想每天下午1點導入下表的更新。在Google Apps腳本中觸發importHTML
=IMPORTHTML("https://en.wikipedia.org/wiki/Lubbock,_Texas","table",5)
我需要的,即使我的電腦離線此爲表自動檢查更新。 謝謝
我想知道是否可以編寫Google Apps腳本,以便在Google電子表格中觸發每日importhtml。例如,假設我想每天下午1點導入下表的更新。在Google Apps腳本中觸發importHTML
=IMPORTHTML("https://en.wikipedia.org/wiki/Lubbock,_Texas","table",5)
我需要的,即使我的電腦離線此爲表自動檢查更新。 謝謝
是的,可以寫一個腳本來每天製作一份表格的副本。 簡而言之,您將不得不復制導入的表格並將其粘貼到新工作表中。每次打開/訪問電子表格時,ImportHTML a都會更新。所以只有存儲表格的方法是將其複製並粘貼到新表格中。
這裏是代碼,做到了這一點:
function getImportData()
{
var ss = SpreadsheetApp.getActive()
var sheet =ss.getSheetByName("ImportSheet")
if (sheet == null)
{
sheet = ss.insertSheet("ImportSheet")
sheet.getRange(1,1).setValue("=IMPORTHTML(\"https://en.wikipedia.org/wiki/Lubbock,_Texas\",\"table\",5)")
}
var dataRange = sheet.getDataRange()
//waitforLoading waits for the function importHTML to finish loading the table, only a problem if table takes a while to load
//for more discussion on this visit : http://stackoverflow.com/questions/12711072/how-to-pause-app-scripts-until-spreadsheet-finishes-calculation
var wait = waitForLoading(dataRange,sheet, 10)
var logSheet = ss.getSheetByName("ImportLogSheet")
if (logSheet == null)
{
logSheet = ss.insertSheet("ImportLogSheet")
}
var timeStampRow = []
timeStampRow[0] = new Date()
if(wait)
{
logSheet.appendRow(timeStampRow)
var lastRow = logSheet.getLastRow() + 1
var destinationRange = logSheet.getRange(lastRow,1)
dataRange.copyTo(destinationRange, {contentsOnly:true})
}
else {
timeStampRow[1] = "Scripted timeout waiting for the table to Load "
logSheet.appendRow(timeStampRow)
}
}
function waitForLoading(dataRange, sheet, maxWaitTimeInSec)
{
// This function is only required if it takes a while for the importHTML to load your data!
// if not you can skip this function
// Function looks to see if the value of the
for(i = 0; i< maxWaitTimeInSec ; i++)
{
var value = dataRange.getCell(1,1).getValue()
if(value.search("Loading") !== -1) {
Utilities.sleep(1000);
dataRange = sheet.getDataRange()
} else {
return true
}
}
return false
}
編輯:忘記提到有關設置觸發器。您可以設置任何使用時間觸發器觸發的功能。有關如何設置它的詳細信息如下:https://developers.google.com/apps-script/guides/triggers/installable#managing_triggers_manually
當你說導入更新?你的意思是每天下午1點製作一份表格的副本,或者查找前幾天表格的變化,只保存變化?應用程序腳本可以在谷歌服務器上運行,因此即使您的計算機處於脫機狀態或關閉狀態,它們也能正常工作 –
即使沒有變化,我也想導入新的表格。但我相信每天都會有新的表格數據 –