よろしくお願いします。
Googleスプレッドシートで目次の内容を読み取り同名のシートを作成、その後そのシートへのリンクを入力したいです。
仕組み自体は正常に動作したのですが、スプレッドシートで作成した物をエクセル形式でダウンロードするとハイパーリンクの指定先がスプレッドシートのアドレスとなってしまいました。
function autosheet() { var ss = SpreadsheetApp.getActiveSpreadsheet(); //アクティブなスプレッドシートを取得 var sheet = ss.getActiveSheet(); //アクティブなスプレッドシート内のシートを取得 var copyMain = ss.getSheetByName('テンプレート');; //コピーしたいシートを取得 var lastnanber = 1;//正式な最終行を格納する //以下指定列の最終行を確認する //------------------------------------------------------------------------------------------------------- //指定列の先頭行から下方向に取得(最初の文字が存在する箇所の確認) var lastRow1 = sheet.getRange(1,4).getNextDataCell(SpreadsheetApp.Direction.DOWN).getRow(); //シート全体での最終行を取得 var lastRow2 = sheet.getLastRow(); //指定列の先頭行から下方向に取得(最終行の確認) var lastRow3 = sheet.getRange(lastRow1, 6).getNextDataCell(SpreadsheetApp.Direction.DOWN).getRow(); lastnanber = lastRow3;//最終行の情報を表示用に代入する //------------------------------------------------------------------------------------------------------- var namesID = sheet.getRange(9,6,lastnanber,1).getValues(); const ssUrl = ss.getUrl();//スプレッドシートのURLを取得 //以下シートの複製を行う //------------------------------------------------------------------------------------------------------- //繰り返し処理を行う for(var i=0; i<namesID.length; i++)//条件判断するのは演出名の部分 { var name = namesID[i][0];//指定箇所の演出名情報を順に取得 console.log(`name${name}`); var copySheet = copyMain.copyTo(ss); //「指定したシート」をコピー copySheet.setName(name);//コピーしたシートの名前をリストの物に変更 // 演出名のセルにリンクを作成 sheet.getRange(i + 9, 6).activate(); sheet.getCurrentCell().setRichTextValue(SpreadsheetApp.newRichTextValue() .setText(name) .setLinkUrl(ssUrl + '#gid=' + copySheet.getSheetId()) .build()); } }
これは仕方がない事かと考えたのですが、GAS等は使わずCtr+K等の手動でシートとリンクさせた場合はエクセル形式にしてもシート同士のリンクは生きたままになっていました。
上記のようにエクセル変換をした場合でもシート間のリンクを維持させられるようなハイパーリンク設定をGASで行う方法はありますでしょうか?
不可能なのかどうかも含めて分かっておりませんので、ご存じの方がおりましたらご教授頂けますと幸いです

回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。