首页 > 解决方案 > 如何在 google-apps-script 中缓存 2D 数组?

问题描述

我一直在尝试缓存一个谷歌表(“SubmissionsTable”。对于第一次运行时缓存为空,一切正常。但是在从缓存读取的后续运行中,“SubmissionsTable”将只有第一行和所有其他行被删除。我附上了代码以防我误解了一些东西。例如:

运行1:拼接后从文件中读取Submission Table = [[1,2,3],[a,b,c]]

运行 2:从缓存中读取Submission Table = [1,2,3]

编辑:按原样运行此代码应该会重现该问题。如果您有兴趣,这是从中获取数据的工作表:链接

var Cache = CacheService.getScriptCache();
var SubmissionsSheetId = "1ijO1mVZ2NasggFvvmdPGUfZkrdOZVhjkM0CbrPYFlhM";
var SubmissionsTable = Cache.get('submissions');
  if (!SubmissionsTable)
  {
    SubmissionsTable = SpreadsheetApp.openById(SubmissionsSheetId).getSheets()[0].getDataRange().getValues();
    SubmissionsTable.splice(0,1);
    Cache.put('submissions',SubmissionsTable,20*60);
  }

标签: google-apps-script

解决方案


这似乎表明并非如此:

function trycache() {
  const a =[[1,2,3],[4,5,6],[7,8,9]];
  let cs=CacheService.getScriptCache();
  cs.put('mykey',JSON.stringify(a));
  const b=JSON.parse(cs.get('mykey'));

  Logger.log(b[0][2]);
}

Execution log
10:28:23 AM Notice  Execution started
10:28:24 AM Info    3.0
10:28:23 AM Notice  Execution completed

推荐阅读