

下のコードを実行すると正常に終了しますが、サムネイルは表示されません。 何が問題なのでしょうか？

[code]

    function dispThumbnail() {
       var sheet = SpreadsheetApp.getActiveSheet();
       var file = DriveApp.getFilesByName("a01.jpg").next();
       sheet.getRange(1, 1).setValue(file.getThumbnail());
       sheet.getRange(1, 2).setValue(file.getId());
     }
    
[/code]

因みにGoogle Develpers リファランス Class File getThumbnail()には`Return type=Blob, Brief
descriptionにはGets a thumbnail image for the file, or null if no thumbnail
exists.とあります。

[code]

    sheet.getRange(1, 2).setValue(file.getId());
    
[/code]

は正しく表示されます。


CC BY-SA 3.0
2015-05-15T04:37:27.657
10212
2015-10-14T08:05:55.770
2015-05-15T05:33:38.187
440
9743
question
google-apps-script
Spreadsheet セルにサムネイルを表示する方法


[`Range#setValue(value)`](https://developers.google.com/apps-
script/reference/spreadsheet/range#setValue\(Object\)) の有効な引数は `numeric,
string, boolean or date` と書かれていますから、
[`File#getThumbnail()`](https://developers.google.com/apps-
script/reference/drive/file#getThumbnail\(\)) の返すBlobを指定することはできません。

代わりに [`Spreadsheet#insertImage(blob, column,
row)`](https://developers.google.com/apps-
script/reference/spreadsheet/spreadsheet#insertImage\(Blob,Integer,Integer\))
を使って、

[code]

    function dispThumbnail() {
       var sheet = SpreadsheetApp.getActiveSheet();
       var file = DriveApp.getFilesByName("a01.jpg").next();
       sheet.insertImage(file.getThumbnail(), 1, 1);
       sheet.getRange(1, 2).setValue(file.getId());
    }
    
[/code]

このように書けるはずなのですが、現時点ではそもそも `getThumbnail()` がBlobを返してくれません。

[Issue 4344 - google-apps-script-issues - DriveApp file.getThumbnail() always
returns null](https://code.google.com/p/google-apps-script-
issues/issues/detail?id=4344)

上のバグ報告によれば、とりあえず Drive Advanced Service の方を使ってくれということらしいです。

  1. `リソース > Google の拡張サービス...` で Drive API を有効化
  2. そのダイアログの下部にも書かれている `Google デベロッパーコンソール` から、Drive API を選択して、これも有効化。

その上で、例えばこんな感じに。

[code]

    function myFunction() {
      var sheet = SpreadsheetApp.getActiveSheet();
      var file = DriveApp.getFilesByName("a01.png").next();
      sheet.insertImage(Drive.Files.get(file.getId()).thumbnailLink, 1, 1);
      sheet.getRange(1, 2).setValue(file.getId());
    }
    
[/code]

`thumbnailLink` で得られたURLを
[`=image()`](https://support.google.com/docs/answer/3093333) に指定してもいいですね。


CC BY-SA 3.0
2015-05-15T08:42:46.480
10221
2015-05-17T06:12:27.213
2015-05-17T06:12:27.213
8000
8000
10212
answer