【问题标题】:Fix Downloaded Image Width & Height修复下载的图像宽度和高度
【发布时间】:2022-09-28 08:57:48
【问题描述】:

我的工作表中有一个图像 URL 列表。问题是当我在一个单元格中下载图像时,它是如此之小,我想让它更大,如果存在错误的 URL,代码也会停止工作。

}

function getImages(){

  let sheet = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet();
  let lastRow = sheet.getLastRow();
 
  for (let i = 0; i < lastRow-1; i++){
  let url = sheet.getRange(2+i,10).getValues();
  let image = SpreadsheetApp.newCellImage().setSourceUrl(url);
   
    sheet.getRange(2+i,10).setValue(image);
    
  }

    标签: javascript google-apps-script google-sheets-api


    【解决方案1】:

    修改点:

    • 关于The problem is when I download the image in a cell its so small and I want to make it bigger,在这种情况下,图像被放入一个单元格中。那么,如何增加单元格的宽度和高度呢?
    • 关于code stop's working if a bad URL is present.,当URL为无效URL时,sheet.getRange(2 + i, 10).setValue(image);处似乎出现错误。
    • 在您的脚本中,getValuessetValues 在循环中使用。在这种情况下,处理成本会变高。 Ref

    当这些点反映在你的脚本中时,下面的修改怎么样?

    修改后的脚本:

    function getImages() {
      let sheet = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet();
      let lastRow = sheet.getLastRow();
    
      // I modified below script.
      // 1. Retrieve URLs from cells "J2:J".
      const range = sheet.getRange("J2:J" + lastRow);
      const values = range.getValues();
      
      // 2. Check URLs.
      const res = UrlFetchApp.fetchAll(values.map(([j]) => ({ url: j, muteHttpExceptions: true })));
      
      // 3. Create an array including CellImage object.
      const v = res.map((r, i) => [r.getResponseCode() == 200 ? SpreadsheetApp.newCellImage().setSourceUrl(values[i][0]).build() : null]);
      
      // 4. Put the array.
      range.setValues(v);
      
      // 5. Increase row height and column width.
      sheet.setRowHeights(2, lastRow - 1, 100).setColumnWidth(10, 500);
    }
    
    • 在此修改中,运行以下流程。

      1. 从单元格“J2:J”中检索 URL。
      2. 检查 URL。
      3. 创建一个包含 CellImage 对象的数组。
      4. 放置数组。
      5. 增加行高和列宽。
      6. 当您想调整行高和列宽时,请修改sheet.setRowHeights(2, lastRow - 1, 100).setColumnWidth(10, 500);

      7. 在此示例中,无效的 URL 被转换为 null。如果要留下网址,请将null修改为values[i][0]

    笔记:

    • 当你的脚本被修改时,也可以使用下面的修改。在这种情况下,使用 try-catch。

        function getImages() {
          let sheet = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet();
          let lastRow = sheet.getLastRow();
          for (let i = 0; i < lastRow - 1; i++) {
            let url = sheet.getRange(2 + i, 10).getValue();
            let image = SpreadsheetApp.newCellImage().setSourceUrl(url).build();
            try {
              sheet.getRange(2 + i, 10).setValue(image);
            } catch (e) {
              console.log(e.message)
            }
          }
          sheet.setRowHeights(2, lastRow - 1, 100).setColumnWidth(10, 500);
        }
      

    参考:

    【讨论】:

      猜你喜欢
      • 2010-11-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-01-17
      • 1970-01-01
      • 1970-01-01
      • 2013-05-06
      • 1970-01-01
      相关资源
      最近更新 更多