Google apps script Google CacheService putAll()在put工作的地方不工作

Google apps script Google CacheService putAll()在put工作的地方不工作,google-apps-script,Google Apps Script,我遇到CacheService.getScriptCache().putAll()的问题 数组是~7k个小字符串(~50char),如果我执行以下代码,它会非常慢,但可以工作 function updateCache(sheet, range, cache){ var contents = sheet.getRange(range).getValues(); var db = {}; for (var i = 0; i < contents.length; i++) {

我遇到CacheService.getScriptCache().putAll()的问题

数组是~7k个小字符串(~50char),如果我执行以下代码,它会非常慢,但可以工作

function updateCache(sheet, range, cache){
  var contents = sheet.getRange(range).getValues();
  var db = {};
  for (var i = 0; i < contents.length; i++) {
    var tmp = contents[i][0]==""? "empty":contents[i][0];
    db[tmp] = i;
    cache.put(tmp, i, 86400);
  }
  //cache.putAll(db, 86400);
}
函数更新缓存(工作表、范围、缓存){
var contents=sheet.getRange(range.getValues();
var db={};
对于(变量i=0;i
如果我对put方法进行注释并启用putAll行,则会出现以下错误:

斯皮亚森蒂。验证服务器的错误。阿泰迪·里普罗娃

这个问题非常普遍,我不明白为什么它不起作用


谢谢

我以前和你有过同样的经历。当时,当使用
putAll()
时,如果数字包含在对象的值中,则会发生此类错误。另一方面,可以使用
put()
。我可以通过将数字转换为字符串来消除错误。因为当我使用
put()
输入数字时,检索到的值变成了字符串。我可以通过这个发现这个解决方案。那么在您的脚本中,下面的修改如何

发件人: 致: 或


如果这不是解决你的问题的办法,我很抱歉。

我以前和你有过同样的经历。当时,当使用
putAll()
时,如果数字包含在对象的值中,则会发生此类错误。另一方面,可以使用
put()
。我可以通过将数字转换为字符串来消除错误。因为当我使用
put()
输入数字时,检索到的值变成了字符串。我可以通过这个发现这个解决方案。那么在您的脚本中,下面的修改如何

发件人: 致: 或


如果这不是针对您的情况的解决方案,我很抱歉。

Tanaike是正确的。要存储的值应该是字符串。还有另一种方法可以确保值被转换;使用
getDisplayValues()
而不是
getValues()
。前者自动将单元格值转换为字符串。@Dimu Designs感谢您添加信息。Tanaike是正确的。要存储的值应该是字符串。还有另一种方法可以确保值被转换;使用
getDisplayValues()
而不是
getValues()
。前者自动将单元格值转换为字符串。@Dimu Designs感谢您添加信息。如文档中所述,
CacheService
用于
String
s:另请参见此问题及其答案:如文档中所述,
CacheService
用于
String
s:另请参见此问题及其答案:
db[tmp] = i;
db[tmp] = i.toString();
db[tmp] = String(i);