【问题标题】:screenshot of Google spreadsheet rangeGoogle 电子表格范围的屏幕截图
【发布时间】:2021-07-23 18:55:09
【问题描述】:

每当值在该范围内发生变化时,我都会尝试截取 Google 电子表格中的一系列单元格,并将屏幕截图保存在 URL 或我的驱动器中,格式为 .jpg、.png 或 pdf 我能够找到类似的东西来截取图表但无法成功修改这种情况下的脚本,有没有人做过类似的事情

【问题讨论】:

    标签: google-apps-script google-sheets automation screenshot


    【解决方案1】:

    以此为参考,如有需要可修改:

    代码:

    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参数见下方参考。
    • 这需要是一个可安装的触发器,而不是一个简单的触发器。

    输出:

    参考:

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-11-28
      • 2020-11-14
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多