Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/google-apps-script/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Google apps script ScriptDB对象大小计算_Google Apps Script - Fatal编程技术网

Google apps script ScriptDB对象大小计算

Google apps script ScriptDB对象大小计算,google-apps-script,Google Apps Script,我正在努力估计我目前天然气项目的极限。我使用ScriptDB进行分块处理,以绕过6分钟的执行限制。如果我有一个像 var userObj{ id: //user email address count: //integer 1-1000 trigger: //trigger ID label: //string ~30 char or less folder: //Google Drive folder ID sendto: //'true' or 'fal

我正在努力估计我目前天然气项目的极限。我使用ScriptDB进行分块处理,以绕过6分钟的执行限制。如果我有一个像

var userObj{

   id: //user email address
   count: //integer 1-1000
   trigger: //trigger ID
   label: //string ~30 char or less
   folder: //Google Drive folder ID
   sendto: //'true' or 'false'
   shareto: //'true' or 'false'
}

如何计算此对象在DB中所占的大小?我想预测在我达到我们域的200MB限制之前,这些对象中有多少可以同时存在。

每当你有关于google apps脚本的问题而不是API的问题时,请先尝试搜索javascript问题。在本例中,我找到并尝试了apps脚本中接受的答案。(事实上,“改进”的答案是可以接受的。)我没有做任何更改,但在这里用测试功能复制了它,所以你可以直接剪切粘贴来试用

下面是我在调试器中使用test
stud
对象得到的结果

现在,它并不完美——例如,它没有考虑到您将在ScriptDB中使用的键的大小。我试了一下。但是,由于您的对象包含一些潜在的巨大值,例如长度为256个字符的电子邮件地址,因此密钥长度可能不太重要

// https://stackoverflow.com/questions/1248302/javascript-object-size/11900218#11900218
function roughSizeOfObject( object ) {

    var objectList = [];
    var stack = [ object ];
    var bytes = 0;

    while ( stack.length ) {
        var value = stack.pop();

        if ( typeof value === 'boolean' ) {
            bytes += 4;
        }
        else if ( typeof value === 'string' ) {
            bytes += value.length * 2;
        }
        else if ( typeof value === 'number' ) {
            bytes += 8;
        }
        else if
        (
            typeof value === 'object'
            && objectList.indexOf( value ) === -1
        )
        {
            objectList.push( value );

            for( i in value ) {
                stack.push( value[ i ] );
            }
        }
    }
    return bytes;
}


function Marks()
{
  this.maxMarks = 100;
}

function Student()
{
  this.firstName = "firstName";
  this.lastName = "lastName";
  this.marks = new Marks();
}

function test () {
  var stud = new Student();
  var studSize = roughSizeOfObject(stud);
  debugger;
}