質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.35%
Google スプレッドシート

Google スプレッドシートは、フリーで利用できる表計算ソフト。Webアプリのためインターネットに接続することで利用できます。チャートやグラフの作成のほか、シートを他のユーザーと共有したり、同時に作業を進めることも可能です。

Google Apps Script

Google Apps ScriptはGoogleの製品と第三者のサービスでタスクを自動化するためのJavaScriptのクラウドのスクリプト言語です。

Q&A

解決済

2回答

157閲覧

【GAS】スプレッドシートへの画像挿入プログラム TypeError: Cannot read properties of undefined というエラー

123aiueo456

総合スコア3

Google スプレッドシート

Google スプレッドシートは、フリーで利用できる表計算ソフト。Webアプリのためインターネットに接続することで利用できます。チャートやグラフの作成のほか、シートを他のユーザーと共有したり、同時に作業を進めることも可能です。

Google Apps Script

Google Apps ScriptはGoogleの製品と第三者のサービスでタスクを自動化するためのJavaScriptのクラウドのスクリプト言語です。

1グッド

0クリップ

投稿2024/09/12 02:39

編集2024/09/12 05:38

実現したいこと

スプレッドシート内にあるハイパーリンク先のスプレッドシートに画像を挿入する

発生している問題・分からないこと

TypeError: Cannot read properties of undefined (reading 'insertImage')
at myfunction(コード:27:14)というエラーが出ています。
当方、プログラミング経験0の初心者です。
現在、ほかの方が書かれたコードをコピーし、一つ一つ理解しながら適宜コードを変更し、プログラムを書いています。
どうしても解決できない問題がありましたので、質問させていただきます。

エラーメッセージ

error

1Exception: The blob format is unsupported. 2 at myfunction(コード:24:9)

該当のソースコード

function myfunction(){ var ss = SpreadsheetApp.getActiveSpreadsheet(); var sh = ss.getActiveSheet(); if(sh.getName()!='シート1'){ } var myCell = sh.getActiveCell(); if( typeof myCell === undefined ){ } else{ SpreadsheetApp.flush() if(myCell.getColumn() == 2 && myCell.getValue()!==""){ } } var richText = sh.getRange(myCell.getRow(),1).getRichTextValue(); var linkUrl = richText.getLinkUrl(); SpreadsheetApp.flush() if (linkUrl) { var spreadsheetId = extractSpreadsheetId(linkUrl); var shs = DriveApp.getFileById(spreadsheetId); var shss = SpreadsheetApp.openById(spreadsheetId); var imgBlob = DriveApp.getFileById("1NLNC9QlxCkzV3AU4RKyid4NiKk63khIa").getBlob(); var imagesh = SpreadsheetApp.openById(spreadsheetId); shss.imagesh.insertImage(imgBlob,23,15) .setHeight(65) .setWidth(65) } else { myCell.setValue(""); } } // スプレッドシートのIDをURLから抽出する関数 function extractSpreadsheetId(url) { var match = url.match(/spreadsheets\/d\/([a-zA-Z0-9-_]+)/); if (match) { return match[1]; } return null; }

試したこと・調べたこと

  • teratailやGoogle等で検索した
  • ソースコードを自分なりに変更した
  • 知人に聞いた
  • その他
上記の詳細・結果

同じようなエラーがあっているものをGoogle等で検索しましたがよくわからず解決できておりません。

補足

function myfunction(){
var ss = SpreadsheetApp.getActiveSpreadsheet();
var sh = ss.getActiveSheet();
if(sh.getName()!='シート1'){

}

var myCell = sh.getActiveCell();
if( typeof myCell === undefined ){
}
else{
SpreadsheetApp.flush()
if(myCell.getColumn() == 2 && myCell.getValue()!==""){

}
}
var richText = sh.getRange(myCell.getRow(),1).getRichTextValue();
var linkUrl = richText.getLinkUrl();
SpreadsheetApp.flush()
if (linkUrl) {
var spreadsheetId = extractSpreadsheetId(linkUrl);
var shs = DriveApp.getFileById(spreadsheetId);
var shss = SpreadsheetApp.openById(spreadsheetId);

var imgBlob = DriveApp.getFileById("1NLNC9QlxCkzV3AU4RKyid4NiKk63khIa").getBlob();
var imagesh = SpreadsheetApp.openById(spreadsheetId);
shss.insertImage(imgBlob,23,15)
.setHeight(65)
.setWidth(65)
} else {
myCell.setValue("");
}
}

// スプレッドシートのIDをURLから抽出する関数
function extractSpreadsheetId(url) {
var match = url.match(/spreadsheets/d/([a-zA-Z0-9-_]+)/);
if (match) {
return match[1];
}
return null;
}
変更後解決しました。

TN8001😄を押しています

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

TN8001

2024/09/12 05:30

JavaとJavaScriptは全く別の言語です。 「Java」タグは外してください。 「Google Apps Script」・「Google スプレッドシート」タグを付けてください。 [タグ一覧|Google Apps Script](https://teratail.com/tags/Google%20Apps%20Script) [タグ一覧|Google スプレッドシート](https://teratail.com/tags/Google%20%E3%82%B9%E3%83%97%E3%83%AC%E3%83%83%E3%83%89%E3%82%B7%E3%83%BC%E3%83%88) > 変更後解決しました。 自分で解決できたということですか? であれば自分で回答してベストアンサーを付け、質問を「解決済」にしてください。 [ヘルプ|質問をした後に自己解決してしまった](https://teratail.com/help#resolve-myself)
123aiueo456

2024/09/12 05:35

>JavaとJavaScriptは全く別の言語です。 ご指摘いただきありがとうございます。タグを外します。
guest

回答1

0

自己解決

下記の内容で解決しました。

function myfunction(){
var ss = SpreadsheetApp.getActiveSpreadsheet();
var sh = ss.getActiveSheet();
if(sh.getName()!='シート1'){

}

var myCell = sh.getActiveCell();
if( typeof myCell === undefined ){
}
else{
SpreadsheetApp.flush()
if(myCell.getColumn() == 2 && myCell.getValue()!==""){

}
}
var richText = sh.getRange(myCell.getRow(),1).getRichTextValue();
var linkUrl = richText.getLinkUrl();
SpreadsheetApp.flush()
if (linkUrl) {
var spreadsheetId = extractSpreadsheetId(linkUrl);
var shs = DriveApp.getFileById(spreadsheetId);
var shss = SpreadsheetApp.openById(spreadsheetId);

var imgBlob = DriveApp.getFileById("1NLNC9QlxCkzV3AU4RKyid4NiKk63khIa").getBlob();
var imagesh = SpreadsheetApp.openById(spreadsheetId);
shss.insertImage(imgBlob,23,15)
.setHeight(65)
.setWidth(65)
} else {
myCell.setValue("");
}
}

// スプレッドシートのIDをURLから抽出する関数
function extractSpreadsheetId(url) {
var match = url.match(/spreadsheets/d/([a-zA-Z0-9-_]+)/);
if (match) {
return match[1];
}
return null;
}

投稿2024/09/12 05:37

123aiueo456

総合スコア3

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.35%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問