簡體   English   中英

在 Google Apps 腳本中觸發 importHTML

[英]Trigger importHTML in Google Apps Script

我想知道是否可以編寫一個 Google Apps 腳本來觸發 Google 電子表格中的每日 importhtml。 例如,假設我想每天下午 1 點導入下表的更新。

=IMPORTHTML("https://en.wikipedia.org/wiki/Lubbock,_Texas","table",5)

即使我的計算機處於離線狀態,我也需要自動檢查表更新。 謝謝

是的,可以編寫腳本來每天制作表格的副本。 簡而言之,您必須復制導入的表格並將其粘貼到新的工作表中。 每次打開/訪問電子表格時,ImportHTML 都會更新。 因此,存儲表格的唯一方法是復制並將其粘貼到新工作表中。

這是執行此操作的代碼:

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM