[解決済み] Google Sheetのカスタム関数で取得したデータをリフレッシュする
質問
Google Appsのカスタムスクリプトを書きました。
id
を受け取り、ウェブサービスから情報(価格)を取得します。
私はこのスクリプトをスプレッドシートで使用しており、問題なく動作しています。問題は、これらの価格が変更されても、スプレッドシートが更新されないことです。
どうしたらスクリプトを再実行してセルを更新させることができますか (各セルを手動で確認せずに)。
どのように解決するのですか?
スクリプトのパラメータが類似している限り、スクリプトを再実行せず、前回実行したときのキャッシュされた結果を使用するのです。したがって、API に再接続することも、価格を再取得することもなく、単にキャッシュされた以前のスクリプト結果を返します。
詳細はこちらをご覧ください (影響を受ける場合は、これらの問題に星を付けてください)。
そして アンリケ・G・アブレウの回答
私の解決策は、スクリプトに別のパラメータを追加することでしたが、それは使ってもいません。これで、以前の呼び出しとは異なるパラメータで関数を呼び出すと、これらのパラメータに対する結果がキャッシュにないため、スクリプトを再実行する必要があります。
そこで、関数を呼び出すときはいつでも、追加のパラメーターに "$A$1" を渡します。 また、refresh というメニュー項目を作成し、それを実行すると、現在の日付と時刻が A1 に格納されます。したがって、$A$1 を 2 番目のパラメーターとするスクリプトのすべての呼び出しは、再計算される必要があります。以下は、私のスクリプトのコードです。
function onOpen() {
var sheet = SpreadsheetApp.getActiveSpreadsheet();
var entries = [{
name : "Refresh",
functionName : "refreshLastUpdate"
}];
sheet.addMenu("Refresh", entries);
};
function refreshLastUpdate() {
SpreadsheetApp.getActiveSpreadsheet().getRange('A1').setValue(new Date().toTimeString());
}
function getPrice(itemId, datetime) {
var headers =
{
"method" : "get",
"contentType" : "application/json",
headers : {'Cache-Control' : 'max-age=0'}
};
var jsonResponse = UrlFetchApp.fetch("http://someURL?item_id=" + itemId, headers);
var jsonObj = eval( '(' + jsonResponse + ')' );
return jsonObj.Price;
SpreadsheetApp.flush();
}
そして、IDが5の商品の価格をセルに入れたいときは、次のような数式を使います。
=getPrice(5, $A$1)
価格を更新したいときは、単に "Refresh" -> "Refresh" メニュー項目をクリックするだけです。
を変更した後は、スプレッドシートを再読み込みする必要があることを忘れないでください。
onOpen()
スクリプトを変更したら、スプレッドシートを再読み込みする必要があることを忘れないでください。
関連
-
[解決済み] スクリプト関数が見つかりません: doGet
-
[解決済み] Googleフォームの隠しフィールド
-
[解決済み] Google Apps Script Error - そのアクションを実行するには認証が必要です。
-
[解決済み] onEditのシンプルなトリガーがトリガーされることがないようです。
-
[解決済み] G Suiteアドオンがドライブへの接続を拒否している?drive.google.com refused to connect" エラーの解決方法は?
-
[解決済み] Google Sheets、"リクエストに有効なAPIキーが不足しています"
-
[解決済み] セルに値を設定するために正しい範囲を取得する方法は?
-
[解決済み] Google Docs/Driveのドキュメントで見出しに番号を振るには?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] スクリプト関数が見つかりません: doGet
-
[解決済み] Googleフォームの隠しフィールド
-
[解決済み] Google Apps Script Error - そのアクションを実行するには認証が必要です。
-
[解決済み] onEditのシンプルなトリガーがトリガーされることがないようです。
-
[解決済み] G Suiteアドオンがドライブへの接続を拒否している?drive.google.com refused to connect" エラーの解決方法は?
-
[解決済み] Google Sheets、"リクエストに有効なAPIキーが不足しています"
-
[解決済み] セルに値を設定するために正しい範囲を取得する方法は?
-
[解決済み] Google Docs/Driveのドキュメントで見出しに番号を振るには?