【问题标题】:Google script loop check for duplicate before writing data在写入数据之前,Google 脚本循环检查重复项
【发布时间】:2020-05-27 12:51:56
【问题描述】:

我有一个脚本,它从网站读取数据,将数据存储在数组变量中,然后将数据写入谷歌表格。

每个项目id(JSON格式),读取的数据格式为:

[timestamp number text1 text2]

这些详细信息在 for 循环中的不同 id 中重复。

我留在工作表上的是每行(每个单元格中的一项):

timestamp(id1) number1(id1) text1(id1) text2(id1) timestamp(id2) number1(id2) text1(id2) text2(id2) timestamp(id3) number1(id3)...etc

每一行将只包含一个时间戳值,但是时间戳变量被写入多次。是否可以调整我的脚本以检查工作表底行的 A 列,并且仅在当前底行中的时间戳与即将写入的新行中的时间戳不同时才写入新行。

for 循环遍历 json 文件并将数据存储在“values”变量中。

{
 {.....
  let values = [];
  values.push(timestamp, number1, text1, text2); //final line of for loop
 }
var ss = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("test");
  var range = ss.getRange(3, 1, 1, values.length);  
  if (range.isBlank()) {  
    range.setValues([values]);
  } else {
    ss.appendRow(values);
  }
}

2 个请求:

a) 我希望时间戳变量只在 A 列中写入一次。

b) 我希望脚本检查最后写入的行,以确保 A 列中打印的时间戳值与将要写入新行中的值不同。如果相同,则不要写入该行。

谢谢

【问题讨论】:

  • 能否发一张你的工作表截图?
  • tinyurl.com/yaldar3c - 手动输入第 1 行和第 2 行。我想删除列 E、I、M(等)的创建并将新行值 A 与最后一行值 A 进行比较

标签: javascript loops google-apps-script


【解决方案1】:

所以对于请求 A:您需要更改要传递给 setValues()method 的数组。如果您已经知道这些列是哪些列,则可以通过将现有值替换为空字符串来修改数组。

const outputRow = [ … ]; // This is where your current output is set
const emptyTheseColumns = [3, 6, 9]; // columns C, F, I

const cleanedOutputRow = outputRow.map( (item, index) => {
  const column = index + 1; // columns start at 1, index at 0

  // return empty string for stated columns 
  if( emptyTheseColumns.indexOf( column ) != -1){
    return ""
  }
  // otherwise return the current value
  return item
});

// then use the new array in setValues( cleanedOutputRow )

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-01-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-01-22
    • 1970-01-01
    相关资源
    最近更新 更多