脚本属性已损坏:无法保存脚本的项目属性

时间:2018-03-22 21:46:17

标签: google-apps-script google-sheets

脚本属性变得"腐败"在调用" PropertiesService.getScriptProperties()。setProperties(properties)"在我的脚本中。通过"腐败",我的意思是我再也无法在以下内容中添加或编辑现有属性:"文件 - >项目属性 - >脚本属性",当我第一次尝试时收到错误消息"无法保存脚本的项目属性。"我尝试删除所有属性并重新添加它们,我尝试删除所有浏览器缓存,并尝试最小化我的属性调用以确保(?)我不超过配额。

出现此错误后,转到"文件 - >项目属性"当它试图加载"信息时,会导致无休止地旋转忙碌的光标。标签。重新加载电子表格允许"文件 - >项目属性"正确加载,但对"脚本属性"中的属性所做的任何编辑;选项卡会返回错误并旋转光标问题。

我已经缩小了我的剧本中的罪魁祸首,但我无法弄清楚它为什么会导致这个问题。在我的" onOpen()"方法我正在构建~125个属性,然后我通过调用" setProperties()"来设置它们。这些属性可以进入脚本属性,并且它们按预期运行,但脚本属性的这种编程设置肯定是"无法为脚本保存项目属性的原因。"错误信息。

Link to a copy of my Google spreadsheet包含导致问题的脚本。导致问题的3个调用用" SETPROPS"评论,并且设置属性的调用用" BROKE!"评论。这个问题或类似的问题在过去已经出现,但似乎已经修复了#34;或不再发生。

代码序列如下:

  1. 我清除所有脚本属性:PropertiesService.getScriptProperties()。deleteAllProperties()
  2. 我称之为三种方法,每种方法都采用"属性"参数。
  3. 这3种方法中的每一种都做了几乎相同的事情。它们各自将键/值对添加到"属性"。
  4. 调用3个方法中的每个方法后,我将属性设置为:

    if(Object.getOwnPropertyNames(properties)。length!== 0) {     。PropertiesService.getScriptProperties()setProperties方法(属性); }

  5. 以下是添加到"属性的3种方法之一" var(初始化为:var properties = {};)。其他3种方法以相同的方式添加到属性变量,但对不同的数据进行操作。

    function setScriptPropertiesShipSizesForFaction(properties, factionName)
    {
        var dataSheetName = factionName + "Data";
        var dataSheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName(dataSheetName);
        var shipValues = dataSheet.getRange('B3:D200').getValues();
        var index = 0;
    
        while ( (index < shipValues.length) && (shipValues[index][0] != "") )
        {
            var key = '_shipSize_' + normalize(shipValues[index][0]);
            var value = shipValues[index][2];
            properties[key] = value;
            index++;
        }
    }
    

    我相信我没有超过任何Google脚本配额。我没有收到来自&#34; setProperties&#34;的调用的任何错误消息,我在Google的Stackdriving Logging中看不到任何错误。在这篇文章的底部,我列出了我在ScriptProperties中设置的内容。它的日志输出,语法:key = value。

    _shipSize_ArquitensCC=S
    _shipSize_ArquitensLC=S
    _shipSize_AssaultFrigateMk2A=M
    _shipSize_AssaultFrigateMk2B=M
    _shipSize_CR90-A=S
    _shipSize_CR90-B=S
    _shipSize_GR-75CombatRetrofits=S
    _shipSize_GR-75MediumTransports=S
    _shipSize_Gladiator1=S
    _shipSize_Gladiator2=S
    _shipSize_GozantiAssault=S
    _shipSize_GozantiCruisers=S
    _shipSize_HammerheadScout=S
    _shipSize_HammerheadTorpedo=S
    _shipSize_ISD1=L
    _shipSize_ISD2=L
    _shipSize_ISDCymoon=L
    _shipSize_ISDKuat=L
    _shipSize_InterdictorCombat=M
    _shipSize_InterdictorSuppression=M
    _shipSize_MC30cScout=S
    _shipSize_MC30cTorpedo=S
    _shipSize_MC75ArmoredCruiser=L
    _shipSize_MC75OrdnanceCruiser=L
    _shipSize_MC80AssaultCruiser=L
    _shipSize_MC80BattleCruiser=L
    _shipSize_MC80CommandCruiser=L
    _shipSize_MC80StarCruiser=L
    _shipSize_Nebulon-BEscort=S
    _shipSize_Nebulon-BSupport=S
    _shipSize_PeltaAssault=S
    _shipSize_PeltaCommand=S
    _shipSize_QuasarFire1=M
    _shipSize_QuasarFire2=M
    _shipSize_Raider1=S
    _shipSize_Raider2=S
    _shipSize_Victory1=M
    _shipSize_Victory2=M
    _upgradeKeyPrefix_EmpireDEFENSIVE 2=6.0
    _upgradeKeyPrefix_EmpireDEFENSIVE=5.0
    _upgradeKeyPrefix_EmpireEXPERIMENTAL 2=8.0
    _upgradeKeyPrefix_EmpireEXPERIMENTAL=7.0
    _upgradeKeyPrefix_EmpireFLEET COMMAND=9.0
    _upgradeKeyPrefix_EmpireFLEET SUPPORT=10.0
    _upgradeKeyPrefix_EmpireION CANNONS=11.0
    _upgradeKeyPrefix_EmpireOFFENSIVE 2=13.0
    _upgradeKeyPrefix_EmpireOFFENSIVE=12.0
    _upgradeKeyPrefix_EmpireOFFICER=4.0
    _upgradeKeyPrefix_EmpireORDNANCE=14.0
    _upgradeKeyPrefix_EmpireSUPPORT TEAM=15.0
    _upgradeKeyPrefix_EmpireTITLE=3.0
    _upgradeKeyPrefix_EmpireTURBOLASER 2=17.0
    _upgradeKeyPrefix_EmpireTURBOLASER=16.0
    _upgradeKeyPrefix_EmpireWEAPONS TEAM 2=19.0
    _upgradeKeyPrefix_EmpireWEAPONS TEAM=18.0
    _upgradeKeyPrefix_RebelDEFENSIVE 2=7.0
    _upgradeKeyPrefix_RebelDEFENSIVE=6.0
    _upgradeKeyPrefix_RebelFLEET COMMAND=8.0
    _upgradeKeyPrefix_RebelFLEET SUPPORT=9.0
    _upgradeKeyPrefix_RebelION CANNONS=10.0
    _upgradeKeyPrefix_RebelOFFENSIVE=11.0
    _upgradeKeyPrefix_RebelOFFICER 2=5.0
    _upgradeKeyPrefix_RebelOFFICER=4.0
    _upgradeKeyPrefix_RebelORDNANCE 2=13.0
    _upgradeKeyPrefix_RebelORDNANCE=12.0
    _upgradeKeyPrefix_RebelSUPPORT TEAM=14.0
    _upgradeKeyPrefix_RebelTITLE=3.0
    _upgradeKeyPrefix_RebelTURBOLASER 2=16.0
    _upgradeKeyPrefix_RebelTURBOLASER=15.0
    _upgradeKeyPrefix_RebelWEAPONS TEAM=17.0
    _upgradeSize_BailOrgana=ML
    _upgradeSize_DisposableCapacitors=SM
    _upgradeSize_GovernorPryce=ML
    _upgradeSize_HardenedBulkheads=L
    _upgradeSize_StrategicAdviser=L calculatedDataSheetName=Calculated Data cellCommander=E2 colEmpirePlayerNames=1 colRebelPlayerNames=8
    colShipNames=2 colSquadNames=2 colUpgradesStart=3
    colVariableUpgradesEndEmpire=19 colVariableUpgradesEndRebel=17
    colVariableUpgradesStartEmpire=5 colVariableUpgradesStartRebel=6
    disabledBgColor=#999999 enabledBgColor=#93c47d
    factionNameEmpire=Empire factionNameRebel=Rebel
    indexFleetSheetsStart=3
    multipleIconUpgrade_BoardingEngineers=OFFENSIVE,WEAPONS TEAM
    multipleIconUpgrade_BoardingTroopers=OFFENSIVE,WEAPONS TEAM
    multipleIconUpgrade_ChamSyndulla=OFFENSIVE,WEAPONS TEAM
    multipleIconUpgrade_DarthVader=OFFENSIVE,WEAPONS TEAM
    multipleIconUpgrade_JynErso=OFFENSIVE,WEAPONS TEAM playersPerTeam=3
    rowPlayerNamesStart=7 rowShipsEnd=17 rowShipsStart=6
    rowSquadNamesEnd=44 rowSquadNamesStart=21 rowUpgradeNames=5
    sheetNameSystemTracking=Systems Tracking sheetNameTeamStatus=Team
    Status upgradeKeyPrefix=_upgradeKeyPrefix_
    upgradeKeyPrefixEmpireDEFENSIVE 2=6.0
    upgradeKeyPrefixEmpireDEFENSIVE=5.0
    upgradeKeyPrefixEmpireEXPERIMENTAL 2=8.0
    upgradeKeyPrefixEmpireEXPERIMENTAL=7.0 upgradeKeyPrefixEmpireFLEET
    COMMAND=9.0 upgradeKeyPrefixEmpireFLEET SUPPORT=10.0
    upgradeKeyPrefixEmpireION CANNONS=11.0
    upgradeKeyPrefixEmpireOFFENSIVE 2=13.0
    upgradeKeyPrefixEmpireOFFENSIVE=12.0
    upgradeKeyPrefixEmpireOFFICER=4.0 upgradeKeyPrefixEmpireORDNANCE=14.0
    upgradeKeyPrefixEmpireSUPPORT TEAM=15.0
    upgradeKeyPrefixEmpireTITLE=3.0 upgradeKeyPrefixEmpireTURBOLASER
    2=17.0 upgradeKeyPrefixEmpireTURBOLASER=16.0
    upgradeKeyPrefixEmpireWEAPONS TEAM 2=19.0
    upgradeKeyPrefixEmpireWEAPONS TEAM=18.0
    upgradeKeyPrefixRebelDEFENSIVE 2=7.0
    upgradeKeyPrefixRebelDEFENSIVE=6.0 upgradeKeyPrefixRebelFLEET
    COMMAND=8.0 upgradeKeyPrefixRebelFLEET SUPPORT=9.0
    upgradeKeyPrefixRebelION CANNONS=10.0
    upgradeKeyPrefixRebelOFFENSIVE=11.0 upgradeKeyPrefixRebelOFFICER
    2=5.0 upgradeKeyPrefixRebelOFFICER=4.0 upgradeKeyPrefixRebelORDNANCE
    2=13.0 upgradeKeyPrefixRebelORDNANCE=12.0
    upgradeKeyPrefixRebelSUPPORT TEAM=14.0 upgradeKeyPrefixRebelTITLE=3.0
    upgradeKeyPrefixRebelTURBOLASER 2=16.0
    upgradeKeyPrefixRebelTURBOLASER=15.0 upgradeKeyPrefixRebelWEAPONS
    TEAM=17.0 upgradeRegex_DEFENSIVE 2=MC80\s+Assault
    upgradeRegex_DEFENSIVE=Arquitens|ISD\s+(2|Kuat)|Assault\s+Frigate|CR90|MC30|MC75|MC80\s+(Assault|Command)
    upgradeRegex_EXPERIMENTAL 2=Suppression
    upgradeRegex_EXPERIMENTAL=Interdictor upgradeRegex_FLEET
    COMMAND=Pelta|ISD\s+Cymoon upgradeRegex_FLEET SUPPORT=Gozanti|GR\-75
    upgradeRegex_ION
    CANNONS=CR90\-B|ISD\s+(2|Kuat|1)|Interdictor|MC75\s+Armored|MC80|Raider\s+2|Victory\s+2
    upgradeRegex_OFFENSIVE 2=ISD\s+1|Quasar\s+Fire\s+1
    upgradeRegex_OFFENSIVE=Gozanti|ISD|Interdictor|Quasar|Raider|Victory|Assault\s+Frigate|GR\-75|Hammerhead|MC75|MC80\s+Command|Pelta\s+Command
    upgradeRegex_ORDNANCE 2=MC75\s+Ordnance
    upgradeRegex_ORDNANCE=Hammerhead\s+Torpedo|Gladiator|ISD\s+Kuat|MC30|MC75|Raider\s+1|Victory\s+1|Pelta\s+Assault
    upgradeRegex_SUPPORT
    TEAM=Arquitens\s+CC|CR90|Gladiator|Interdictor|MC80|Pelta|Nebulon
    upgradeRegex_TURBOLASER 2=ISD\s+Cymoon|MC80\s+(Star|Battle)
    upgradeRegex_TURBOLASER=Arquitens|Assault\s+Frigate|CR90\-A|Hammerhead\s+Scout|ISD\s+(2|Cymoon|1)|MC30|MC75\s+Armored|MC80|Nebulon|Victory
    upgradeRegex_WEAPONS TEAM 2=Quasar\s+Fire\s+2 upgradeRegex_WEAPONS
    TEAM=Assault\s+Frigate|Hammerhead|Gladiator|ISD|MC30|MC75|MC80\s+(Battle|Star)|Quasar|Raider|Victory
    

1 个答案:

答案 0 :(得分:0)

对于它的价值,我也遇到了同样的问题。有一个较旧版本的this Google Apps Script正在运行,并且它有大约相同数量的属性。通过GAS界面我无法删除任何属性。我只是遇到了这个问题,所以我还没有深入研究解决方案。我存储的属性是服务帐户使用的每个用户的令牌,所以我希望每隔x天编程清除一次令牌就足够了。我会在这里发布更新。