google-apps-script - Google 电子表格范围的屏幕截图
问题描述
每次值在该范围内发生更改时,我都会尝试在 Google 电子表格中截取一系列单元格的屏幕截图,并将屏幕截图保存在 URL 或我的驱动器中为 .jpg、.png 或 pdf 我能够找到类似的东西用于截取图表但无法成功修改此案例的脚本,有没有人做过类似的事情
解决方案
以此为参考,如有需要可修改:
代码:
function exportPdf(e) {
var spreadsheet = e.source;
var sheet = spreadsheet.getActiveSheet();
var range = e.range;
// sample dimension to be checked is B2:E5
var checkDimension = {
startingRow: 2,
startingColumn: 2,
endingRow: 5,
endingColumn: 5
};
// range should be within checkDimension and Sheet1
if(sheet.getSheetName() == 'Sheet1' &&
range.getRow() >= checkDimension.startingRow &&
range.getLastRow() <= checkDimension.endingRow &&
range.getColumn() >= checkDimension.startingColumn &&
range.getLastColumn() <= checkDimension.endingColumn) {
var spreadsheetId = spreadsheet.getId();
var sheetId = sheet.getSheetId();
var exportRange = "B2:E5";
var urlString = 'export?exportFormat=pdf&format=pdf' +
'&gid=' + sheetId + '&id=' + spreadsheetId +
'&range=' + exportRange +
'&size=A4' + // paper size
'&portrait=true'; // orientation, false for landscape
// See https://webapps.stackexchange.com/questions/130654/all-google-docs-url-parameters-functions-commands for more url parameters
var exportUrl = spreadsheet.getUrl().replace(/edit.*$/, urlString);
var options = {
headers: {
'Authorization': 'Bearer ' + ScriptApp.getOAuthToken(),
},
muteHttpExceptions: true
}
var response = UrlFetchApp.fetch(exportUrl, options);
if (response.getResponseCode() !== 200) {
Logger.log("Error exporting Sheet to PDF! Response Code: " + response.getResponseCode());
return;
}
var blob = response.getBlob();
var timestamp = new Date().toISOString();
// set name to spreadsheet_sheet_range_timestamp.pdf
blob.setName(spreadsheet.getName() + '_' + sheet.getSheetName() + '_' + exportRange + '_' + timestamp + '.pdf');
var folderId = 'enter your folder ID here';
// Create the PDF file in the specific folder
DriveApp.getFolderById(folderId).createFile(blob);
}
}
笔记:
- 更多 url 参数,请参见下面的参考资料。
- 这需要是一个可安装的触发器,而不是一个简单的触发器。
输出:
参考:
推荐阅读
- arduino - Arduino Ethernet shield 未正确接收 UDP 数据包
- javascript - 单击按钮更改 SVG 的颜色/填充属性
- android - 如何告诉 Dagger2 在同一个类中创建一个对象的新实例?
- java - 在 SparkSession 上设置 maxExecutorRetries
- c++ - 将多个非原始递归调用转换为迭代解决方案
- javascript - 无法将子菜单的宽度作为父元素进行管理
- ios - 如何区分 iOS 应用上的 App Store、TestFlight 和 IPA 安装?
- pythonanywhere - pythonanwhere 新手:我没有看到 sqlite 选项
- rust - 非词法生存期借用检查器会过早释放锁吗?
- maven - 如何使用没有pom文件或settings.xml文件的maven直接将jar文件上传到nexus存储库?