为什么此Google Apps脚本的参数无法按预期工作?

时间:2013-11-02 01:32:47

标签: javascript parameters google-apps-script arguments

我在设置下面代码的第二个函数(这个function findDate (text, word))的参数时遇到了问题。而不是使用此代码:

if (text2[text2.length - 2] === word) {
   date = text2[text2.length - 1];

我想用另一个:

if (text2[text2.length - position_word] === word){
   date = text2[text2.length - position_date];

所以我可以在不同的上下文中调用这个函数。 但是,当我向此函数添加另外两个参数时,就像这个function findDate (text, word, position_word, position_date)一样,它只是不起作用。我无法理解出现了什么问题(日志消息似乎没问题)。你能看出什么是错的?我在这里缺少什么JS函数属性?

function setColumnIfromG() {
  var s = SpreadsheetApp.getActiveSheet();
  var input = s.getRange(2, 7, s.getLastRow(), 1).getValues();
  var output = [];
  for (var i = 0; i < input.length; i++) {
      output.push([ findDate(input[i][0], 'common term') ]);
   // output.push([ findDate(input[i][0], 'common term', -2, -1) ]);
      s.getRange(2, 9, output.length, 1).setValues(output);
    }
 }

function findDate (text, word){
//function findDate (text, word, position_word, position_date){
  Logger.log('text = '+ text);
  var text1 = text.split(".Date");
  Logger.log("text1 = "+ text1);
  var date = 'no date informed';
  for (var i=0; i<text1.length; i++) {
    var text2 = text1[i].split(" ");
    Logger.log("text2 = " + text2);
    Logger.log("text2[text2.length - 2] = " + text2[text2.length - 2]);
    Logger.log("text2[text2.length - 1] = " + text2[text2.length - 1]);

//    Logger.log("text2.length = " + text2[text2.length]);
//    Logger.log("position_word = " + position_word);
//    Logger.log("position_date = " + position_date);

    if (text2[text2.length - 2] === word){
      date = text2[text2.length - 1];
//    if (text2[text2.length - position_word] === word) {
//        date = text2[text2.length - position_date];
    }
      else {
      date = 'no date informed';
      }
   }
   return date;
}

PS - 我知道“位置日期”不是-1而是text2.length - 1。因此,“位置日期”实际上是text2.length - position_date而不是position_date。我把这个名字只用于记住这个-1与之相关的内容。

1 个答案:

答案 0 :(得分:1)

在您的两个参数版本中,您有代码

date = text2[text2.length - 1];

在您的四个参数版本中,您有代码

date = text2[text2.length - position_date];

但是你将-1作为新position_date param

的值传递给函数

我会坐在那里看着你,直到便士掉落8 - )