从另一个Google工作表导入带有公式的数据并删除原始数据

时间:2018-10-08 12:03:26

标签: google-apps-script google-sheets

嗨,我正在使用以下脚本从另一个Google表格导入数据,但是它没有引入我需要的公式,我尝试了ImportRange,但这似乎只是同步了两个表格,因此我需要删除原始工作表(工作表1)中的数据但也将其删除(我购买的工作表(主工作表)中的数据),还有另一种方法可以完成此操作,谢谢。

function Copy() {
  var sss = SpreadsheetApp.openById('Sheet 1 ID');
  var ss = sss.getSheetByName('results');
  var range = ss.getRange('2:688');
  var data = range.getValues();
  var tss = SpreadsheetApp.openById('Master Sheet ID');
  var ts = tss.getSheetByName('results');
  ts.getRange(ts.getLastRow() + 1, 1, data.length, data[0].length).setValues(
    data
  );
  var sheet = SpreadsheetApp.openById('Sheet 1 ID').getSheetByName('Roger');
  ss.getRange('2:688').clearContent();
}

1 个答案:

答案 0 :(得分:1)

问题:

  • 不使用getValues()检索公式

可能的解决方案:

  • 使用range#getFormulasrange#getValues并混合这两个数组以创建一个公式和值数组,供以后setValues()使用。
  • 使用高级Google服务访问Sheets API,以直接获取组合。

示例脚本摘要:

  var data = range.getValues();
  data = range.getFormulas().map(function(e, i) {//i=index of row(e)
    return e.map(function(f, j) {//j = index of column(f)
      return f === "" ? data[i][j] : f;
    });
  });

  var req = {
    ranges: 'results!2:688',
    valueRenderOption: 'FORMULA', //get formulas with values
  };
  var r = Sheets.Spreadsheets.Values.batchGet('Sheet 1 ID', req);
  data = r.valueRanges[0].values;

参考文献: