在完成的行中添加 "done" 或 "added" 之类的词

Adding word like "done" or "added" to the completed row

我有这个脚本来添加导入范围公式:

function setImportRangeFromList1() {
const ss = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("List");
const rows = ss.getRange('A2:D').getValues().filter(r=> r[1])
rows.map(row => SpreadsheetApp.openById(row[0]).getSheetByName(row[1]).getRange(row[2]).setFormula(row[3]))
}

这里是电子表格: https://docs.google.com/spreadsheets/d/1GeVSs3zfuxNYzGybwpTuGGNcwV7U--8VksUHzc5f9p4/edit#gid=0

我正在寻找的是将“完成”或“添加”之类的词添加到已完成的行中,我希望脚本在下次 运行 时不再执行这些行。 我希望有人能帮助我。

你的情况,下面的修改怎么样?

修改后的脚本:

function setImportRangeFromList1() {
  const check = "done";
  const ss = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("List");
  const rows = ss.getRange('A2:E').getValues();
  const ranges = rows.map((row, i) => {
    if (row[1] && row[4] != check) {
      SpreadsheetApp.openById(row[0]).getSheetByName(row[1]).getRange(row[2]).setFormula(row[3]);
      return `E${i + 2}`;
    }
    return "";
  }).filter(String);
  if (ranges.length == 0) return;
  ss.getRangeList(ranges).setValue(check);
}
  • 本次修改,勾选“E”列时,单元格值不是done时,SpreadsheetApp.openById(row[0]).getSheetByName(row[1]).getRange(row[2]).setFormula(row[3])是运行,done是放入“E”列。这样,当脚本是 运行 第二次时,将跳过“E”列中带有 done 的行。

注:

  • 如果您想使用added代替done,请修改const check = "done";

参考文献: