web-dev-qa-db-ja.com

VLOOKUPとIMPORTHTML

[〜#〜] vlookup [〜#〜]を使用してGoogle Apps Scriptの問題が発生し、[〜#〜] importhtml [〜#〜]関数。

通常のユーザーインタラクションの場合、これは問題とは思われませんが、[〜#〜] vlookup [〜#〜]セルにアクセスするスクリプトがときどき#N/Aセルと[〜#〜] vlookup [ 〜#〜]データ。これは、シートを約20分以上使用した後に発生するようです。それは時間の約20%が発生すると思います。

[〜#〜] importhtm [〜#〜]Lを強制的に更新すると、問題が修正される可能性が約50〜50あります。二回やってください。それが機能しない場合は、シートを閉じて再度開きます。

私は非常に単純な「theSheet.getRange(theRow、10).getDisplayValue()」スクリプト呼び出しからデータを取得しており、theRowは実際の行に適切に設定されています。

他の誰かがこれを見たことがありますか、可能な解決策についてアドバイスできますか?

[RawData]タブが非表示になり、 "IMPORTHTML(" http://www.foobar.org/Ajax.php?Act=7 "、" table "、2)"から派生したデータが表示されますCustDataの名前付き範囲で、最終的には次のようになります。

RawData

vlookupは単に「= vlookup(A7、RawData!K:L、2、true)」で、A7はデータ検証です落ちる。

#N/Aを取得しているコードは、OnEditトリガーから呼び出される以下のスニペットのCustomerSSID:属性です。

var theData =
{
  DSAmClean: PropertiesService.getUserProperties().getProperty('DSAmClean'),
  ServerIP: theSheet.getRange('ServerIP').getDisplayValue(),
  ServerPort: theSheet.getRange('ServerPort').getDisplayValue(),
  SheetName: theSheet.getName(),
  Row: theRow, 
  Col: theCol,
  Notes: theNotes,
  colTitle: theSheet.getRange(2,theCol).getValue(),
  cellValue: theSheet.getRange(theRow,theCol).getDisplayValue(),
  DeliveryDate: theSheet.getRange(theRow,1).getDisplayValue(),
  CustomerName: theSheet.getRange(theRow,2).getDisplayValue(),
  CustomerSSID: theSheet.getRange(theRow,3).getValue(),
  ProdSSID: theSheet.getRange(theRow,4).getDisplayValue(),
  ProductShipped: theSheet.getRange(theRow,5).getDisplayValue().toString(),
  ContractSales: theSheet.getRange(theRow,6).getDisplayValue(),
  OriginPoint: theSheet.getRange(theRow,7).getDisplayValue(),
  VendorName: theSheet.getRange(theRow,8).getDisplayValue(),
  VendorSSID: getSSIDFromVendorName(theSheet.getRange(theRow,8).getDisplayValue()),
  Margin: theSheet.getRange(theRow,9).getValue(),
  FOBPrice: theSheet.getRange(theRow,10).getValue(),
  PurchaseContract: theSheet.getRange(theRow,11).getDisplayValue(),
  LoadNumber: theSheet.getRange(theRow,12).getDisplayValue(),
  TruckingCompany: theSheet.getRange(theRow,13).getDisplayValue(),
  TruckingRate: theSheet.getRange(theRow,14).getValue(),
  ShippingWeight: theSheet.getRange(theRow,15).getValue(),
  FreightTotal: theSheet.getRange(theRow,16).getValue()
}

もちろん、列3にはVlookupが含まれています。

1
BigMikeL

あなたのような場合の最も信頼できるアプローチは、IMPORTHTML、IMPORTRANGEなどの関数を使用しないようにすることです。これらの関数は、再計算のたびに更新されないか、または対応する数式が依存する行コードの前に強制的に「更新」されるためです。そのような式の結果。

0
Rubén