【发布时间】:2021-07-23 18:55:09
【问题描述】:
每当值在该范围内发生变化时,我都会尝试截取 Google 电子表格中的一系列单元格,并将屏幕截图保存在 URL 或我的驱动器中,格式为 .jpg、.png 或 pdf 我能够找到类似的东西来截取图表但无法成功修改这种情况下的脚本,有没有人做过类似的事情
【问题讨论】:
标签: google-apps-script google-sheets automation screenshot
每当值在该范围内发生变化时,我都会尝试截取 Google 电子表格中的一系列单元格,并将屏幕截图保存在 URL 或我的驱动器中,格式为 .jpg、.png 或 pdf 我能够找到类似的东西来截取图表但无法成功修改这种情况下的脚本,有没有人做过类似的事情
【问题讨论】:
标签: google-apps-script google-sheets automation screenshot
以此为参考,如有需要可修改:
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);
}
}
【讨论】: