GSCRIPT - 如何缓存HTML页面内容?

3

我在某个问题上卡住了。

我有一个HTML模板正在加载,该页面中有很多JavaScript代码。

我正试图通过使用Google Sheet的onOpen()来缓存模板以加速操作。 我不知道如何缓存我的HTML页面CalForm.html (从我的内部Google Sheet脚本中)。

这就是我现在拥有的:

创建缓存

function CacheCreate() {

CacheService.getScriptCache().put('CalCache', 'CalForm');
 Browser.msgBox("done");
}

获取缓存

var evalSheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName('Evaluation');
  var row = evalSheet.getActiveCell().getRow();

  var CalCache2 = CacheService.getScriptCache().get('CalCache');

  Browser.msgBox(CacheService.getScriptCache().get('CalCache'))

  initialize(row);

  //var cache = CacheService.getScriptCache();
  //var cache2 = cache.get('rss-feed-contents');

  //Browser.msgBox(cache.get('rss-feed-contents'));

var html = HtmlService
      .createTemplateFromFile(CalCache2)
      .evaluate()
      .setWidth(1200)
      .setHeight(560)
      .setSandboxMode(HtmlService.SandboxMode.NATIVE);
  SpreadsheetApp.getUi().showModalDialog(html, 'Calculatrice');

感谢您的帮助!
1个回答

0

首先,您需要从“内部Google表格脚本”中获取HTML,以下代码将获取HTML(以字符串格式),前提是您的脚本中有一个名为“template.html”的文件。

var template = HtmlService.createHtmlOutputFromFile('template').getContent();

我运行一个检查来查看数据是否已经在缓存中...

function getObjectsFromCache(key, objects, flush) 
{
  Logger.log("Running:  getObjectsFromCache(" + key + ", objects)");
  var cache = CacheService.getScriptCache();
  var cached = cache.get(key);
  flush = false;  // 1st run 45.33, 2nd run 46.475
  //flush = true;// 65.818 seconds
  if (cached != null && flush != true) 
  {
    Logger.log("\tEXISTING DATA -> ");
    cached = cache.get(key);
  }
  else
  {
    Logger.log("\tNEW DATA -> ");
    //Logger.log("\tJSON.stringify(objects):  " + JSON.stringify(objects) + ", length:  " + objects.length);
    //If you're working with spreadsheet objects, or array data, you'll want to put the data in the cache as a string, and then reformat the data to it's original format, when it is returned.
    //cache.put(key, JSON.stringify(objects), 1500); // cache for 25 minutes
    //In your case, the HTML does not need to be stringified.
    cache.put(key, objects, 1500); // cache for 25 minutes
    cached = objects;
  }
  return cached;
}

我将JSON.Stringify(objects)注释掉了,因为在我的原始代码中,我使用另一个名为formatCachedData(cache, key)的函数来返回不同类型的数据 - 多维数组(电子表格数据)或来自AdminDirectory.Users.list({...})的Google用户数据。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接