Google Apps脚本无法验证我的IF语句

时间:2017-05-05 11:52:21

标签: database google-apps-script google-sheets

无法及时解决这个问题,并且可能暗暗希望有人会告诉我,我会以错误的方式解决这个问题并提出更好的方法。我通过突出显示一系列单元格并单击按钮来激活脚本。首先进行一些错误检查以确保选择良好,然后这是代码的实际内容。一切运作良好,唯一我无法解决的问题是,if语句不会返回正数,因此它们会被跳过,代码完成后不会执行任何实际操作。我在下面评论了每个变量的预期数据。请停下来!

var source = SpreadsheetApp.getActiveSheet();
var sA1 = source.getActiveRange().getA1Notation();
var sdata = source.getRange(sA1).getValues();
var samtpaid = source.getRange(sA1).offset(0, 8, sdata.length, 1).getValues();
var sdate = source.getRange("J2").getValue();


var target = SpreadsheetApp.openById("...sheetid...").getSheetByName("...sheetname...");

目标电子表格包含sdata中的所有数据以及sdata中未包含的更多记录。

  var trange = target.getDataRange();
  var tvalues = target.getDataRange().getValues();
  var trangesize = target.getDataRange().getLastRow();

    for (var i = 0; i < sdata.length; ++i) {
  var row = sdata[i];
  var row2 = samtpaid[i];
  var row3 = sdate;

    for (var j = 0; j < trangesize; ++j) {
  var trow = tvalues[j];

  if (row[0] == trow[0]){

row [0]是一个时间戳,所以是trow [0] ...当使用msgBox进行调试时,这些值似乎完全相同(当它找到匹配的记录时),这就是为什么我可以&#39 ;弄清楚这笔交易是什么。

  if (row[6] == trow[1]){

row [6]是一个电子邮件地址,因此是trow [1] ...代码永远不会使用if if语句来查看它是否会通过,但值似乎是完全匹配

  trange.offset(0, 17, 1, 1).setValues(row2[i]);
  trange.offset(0,18,1,1).setValue(row3);

    } //end inner if

    } //end outer if

    } //end inner for

  } //end outer For

1 个答案:

答案 0 :(得分:0)

if (row[0].toString() == trow[0].toString()){
if (row[6] == trow[1]){

需要进行少量更新。而不是比较日期/时间,比较字符串是可行的方法。

trange.offset(j,17,1,1).setValue(row2);
trange.offset(j,18,1,1).setValue(row3);

这里的小更新我不需要row2 [i],只需要row2就足够了。同样使用j(而不是0)作为numRows偏移量意味着值被附加到正确的位置,而不是仅仅是顶行,并且每次代码循环时都会覆盖它自己。

感谢您的帮助!