google-apps-script - 从另一个谷歌表格中导入带有公式的数据并删除原始数据
问题描述
我正在使用以下脚本从另一个 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();
}
解决方案
问题:
- 不检索公式
getValues()
可能的解决方案:
- 使用
range#getFormulas
和range#getValues
混合这两个数组来创建一个公式和值的数组,以供setValues()
以后使用。 - 使用 Advanced Google Services 访问 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;
参考:
推荐阅读
- keras - Keras seq2seq 填充
- php - 数据库中字符串的本地和生产解码之间的区别
- swift - AVPlayer 需要很多时间才能从 url 开始播放歌曲
- javascript - 使用 paste.image.js 保存 Img
- php - 如何获取具有特定字符的数组?
- python - Python:删除所有芹菜工人
- javascript - 插件 - 无法在 content_script 中为 firefox 插件添加模块
- angular - 使用服务访问模式时遇到异常
- c# - 使用 groupBy 将数据从 Linq-to-XML 保存到对象列表
- java - 通过文本文件搜索红黑树