【问题标题】:Google spreadsheet custom function returns nothingGoogle 电子表格自定义函数不返回任何内容
【发布时间】:2017-11-14 15:21:31
【问题描述】:

我在调试代码时遇到问题。如果我自己定义值而不是从属性和电子表格中获取值,它就会起作用。我是 JavaScript 新手,所以它可能是非常基本的错误。

我想用这个函数做什么:

  1. 从电子表格中获取人名、日期和学校名称
  2. 从与其他函数一起保存的属性中获取数组数据。该函数中的保存行如下所示:

    PropertiesService.getScriptProperties().setProperty('Mokyklo‌​s', JSON.stringify(Mokyklos));
    

它是 6 个全名数组、日期数组、学校名称数组和数字数组。数字数组用于返回答案。

      function ApmokMokMokykloje(mokytojas, data, mokykla) {      
      Utilities.sleep(Math.random() * 1000);
      var MokytojaiL = PropertiesService.getScriptProperties().getProperty('MokytojaiL');
      var Mokytojai1 = PropertiesService.getScriptProperties().getProperty('Mokytojai1');
      var Mokytojai2 = PropertiesService.getScriptProperties().getProperty('Mokytojai2');
      Utilities.sleep(Math.random() * 1000);
      var Mokytojai3 = PropertiesService.getScriptProperties().getProperty('Mokytojai3');
      var Mokytojai4 = PropertiesService.getScriptProperties().getProperty('Mokytojai4');
      var Mokytojai5 = PropertiesService.getScriptProperties().getProperty('Mokytojai5');
      Utilities.sleep(Math.random() * 1000);
      var Datos = PropertiesService.getScriptProperties().getProperty('Datos');
      var Mokyklos = PropertiesService.getScriptProperties().getProperty('Mokyklos');
      var ApmokMokSkaiciai = PropertiesService.getScriptProperties().getProperty('ApmokMokSkaiciai');


      var mokytojaiL = MokytojaiL;
      mokytojaiL = JSON.parse(mokytojaiL);

      var mokytojai1 = Mokytojai1;
      mokytojai1 = JSON.parse(mokytojai1);

      var mokytojai2 = Mokytojai2;
      mokytojai2 = JSON.parse(mokytojai2);

      var mokytojai3 = Mokytojai3;
      mokytojai3 = JSON.parse(mokytojai3);

      var mokytojai4 = Mokytojai4;
      mokytojai4 = JSON.parse(mokytojai4);

      var mokytojai5 = Mokytojai5;
      mokytojai5 = JSON.parse(mokytojai5);

      var datos = Datos;
      datos = JSON.parse(datos);

      var mokyklos = Mokyklos;
      mokyklos = JSON.parse(mokyklos);

      var skaicius = ApmokMokSkaiciai;
      skaicius = JSON.parse(skaicius);


      for(var i = 0; i < mokyklos.length; i++) { 
        if(data==datos[i] && mokykla==mokyklos[i]) { 
        if ((mokytojas==mokytojaiL[i]) || (mokytojas==mokytojai1[i]) || (mokytojas==mokytojai2[i]) || (mokytojas==mokytojai3[i]) || (mokytojas==mokytojai4[i]) || (mokytojas==mokytojai5[i]))  {
        return skaicius[i]; // returns blank
            }
          }
        }

    }

下面的代码可以正常工作。

function testas3(mokytojas, data, mokykla) {

  // the same values from spreadsheet
  var datapvz="2017-11-04T22:00:00.000Z";
  var mokyklapvz="Zalioji mokykla";
  var mokytojaspvz="Penivilas Gremlinavičius";

  // the same values from properties 
  var datos = [];
datos[0]="2017-11-08T22:00:00.000Z";
datos[1] = "2017-11-15T22:00:00.000Z";
datos[2] = "2017-11-11T22:00:00.000Z";
datos[3] = "2017-11-03T22:00:00.000Z";
datos[4] = "2017-11-04T22:00:00.000Z";
  var mokyklos = [];
mokyklos[0] = "Mokykla nuostabioji";
mokyklos[1] = "Mylimiausioji mokyklele";
mokyklos[2] = "Dar viena mokyykla";
mokyklos[3] = "Raudonoji";
mokyklos[4] = "Zalioji mokykla";
  var mokytojaiL = [];
mokytojaiL[0] = "Cristopher Rangel";
mokytojaiL[1] = "Alessandra Knox";
mokytojaiL[2] = "Germtautas Falalavičius";
mokytojaiL[3] = "Lenkgaudė Trikojytė";
mokytojaiL[4] = "Penivilas Gremlinavičius";
var mokytojai1 = [];
mokytojai1[0] = "Mantvydas Špukys";
mokytojai1[1] = "Išeikbaida Visursėkmytė";
mokytojai1[2] = "Svaidgaudė Praperduvienė";
mokytojai1[3] = "Mantvinas Žirgmyla";
mokytojai1[4] = "Mantvinas Žirgmyla";
var mokytojai2 = [];
mokytojai2[0] = "Griovbaida Nepriteklytė";
mokytojai2[1] = "Išeikbaida Visursėkmytė";
mokytojai2[2] = "Griovbaida Nepriteklytė";
mokytojai2[3] = "Arjautauta Fragmentavičiutė";
mokytojai2[4] = "Kastuvaldas Parašiutauskas";
var mokytojai3 = [];
mokytojai3[0] = "Rustautas Celiulionis";
mokytojai3[1] = "Androbauda Parankpapaitė";
mokytojai3[2] = "Arjauvilė Katrakojytė";
mokytojai3[3] = null;
mokytojai3[4] = "Rustautas Celiulionis";
var mokytojai4 = [];
mokytojai4[0] = null;
mokytojai4[1] = null;
mokytojai4[2] = null;
mokytojai4[3] = "Arjauvilė Katrakojytė";
 var mokytojai5  = [];
  var skaicius = [];
skaicius[0]="99";
skaicius[1]="98";
skaicius[2]="87";
skaicius[3]="89";
skaicius[4]="89";


      for(var i = 0; i < mokyklos.length; i++) { 
       if(datapvz==datos[i] && mokyklapvz==mokyklos[i]) { 
        if ((mokytojaspvz==mokytojaiL[i]) || (mokytojaspvz==mokytojai1[i]) || (mokytojaspvz==mokytojai2[i]) || (mokytojaspvz==mokytojai3[i]) || (mokytojaspvz==mokytojai4[i]) || (mokytojaspvz==mokytojai5[i]))
        {
         return skaicius[i]; // returns 89
        }
      }
    }

}

【问题讨论】:

  • 你能显示/链接到数据源吗?
  • 电子表格如下所示:i.imgur.com/EOGvoi1.png 其他数据取自脚本属性,看起来与第二个脚本值中的几乎相同(我更改了名称)。数据以这种方式保存在脚本属性中: Mokyklos = mokyklosNames; PropertiesService.getScriptProperties().setProperty('Mokyklos', JSON.stringify(Mokyklos));

标签: javascript return spreadsheet


【解决方案1】:

我认为问题在于您将日期对象(来自电子表格......例如,来自单元格 F$1)与字符串文字(来自您保存的 JSON 对象)进行比较。为了使它们匹配,您应该在比较之前在日期对象上调用toJSON(),如下所示:

var date = data.toJSON();
for(var i = 0; i < mokyklos.length; i++) { 
    if(date==datos[i] && mokykla==mokyklos[i]) { 
        if ((mokytojas==mokytojaiL[i]) || (mokytojas==mokytojai1[i]) || (mokytojas==mokytojai2[i]) || (mokytojas==mokytojai3[i]) || (mokytojas==mokytojai4[i]) || (mokytojas==mokytojai5[i]))  {
            return skaicius[i];
        }
    }
}

【讨论】:

  • 是的,'.toJSON();'解决了。我正在考虑,但找不到这个选项。谢谢!!
  • @Tadas695lt 太棒了!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-10-13
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多