google-sheets-api - Google Sheet API 删除包含值的行
问题描述
所以,
我有一个从节点脚本更新的电子表格。
但我没有找到任何关于如何:
- 在 A 列中查找所有具有值的行(例如:'2019-09-06')
- 删除这些匹配的行
非常感谢 !
实际的脚本现在非常基本
async function appendData(spreadsheetId, sheets, rows) {
return await sheets.spreadsheets.values.append({
valueInputOption: 'USER_ENTERED',
spreadsheetId: spreadsheetId,
range: 'API',
requestBody: {
values: rows,
},
});
}
const auth = await getAuth();
const sheets = google.sheets({version: 'v4', auth});
const result = await appendData('xxSHEET_IDxx', sheets, [].concat(...rows));
解决方案
有用的东西
async function removeMatchingRows(spreadsheetId, sheets, date) {
const result = await sheets.spreadsheets.values.get({
spreadsheetId: spreadsheetId,
range: 'API!A:A',
});
let ranges = [];
var current = {
dimension: "ROWS",
startIndex: 0,
endIndex: 0
};
for(var i = 0; i < result.data.values.length; i++) {
if (result.data.values[i][0] == date) {
if (current.endIndex === i - 1 || current.startIndex === 0) {
if (current.startIndex === 0) {
current.startIndex = i;
}
current.endIndex = i + 1;
} else {
ranges.push(current);
current = {
dimension: "ROWS",
startIndex: i,
endIndex: i + 1
}
}
}
}
if (current.startIndex !== 0) {
ranges.push(current);
}
let requests = ranges.map(range => {
return {
deleteDimension: {
range: range
}
}
}).reverse();
await sheets.spreadsheets.batchUpdate({
spreadsheetId: spreadsheetId,
requestBody: {
requests: requests
}
});
}
推荐阅读
- android - 如何从 android 应用程序安装 .cap 小程序?
- aws-lambda - CloudWatch 记录多个自定义指标过滤器以触发 lambda 函数
- java - 如何在休眠中的排序结果中获得第一组结果?
- android - 应该如何为 Firebase 请求构建结构
- node.js - 为什么当视图深度为两层时我的 CSS 不被应用
- c - 通过在c中输入位置来查找字符串的字符
- c# - 将文本作为 guid 插入二进制 (16)
- html - 如何在 angular5/angularitics 中安装单独的 mixpanel 项目以进行开发和生产
- html - 输入类型文本为带斜线的格式化日期
- css - 媒体查询功能中从地图生成 SASS 动态颜色