ご訪問ありがとうございます。
Googleシートマスターのひろしです。
前回
【GAS】リンク付きシート一覧で非表示のシートを無視する方法
今回は、とっても価値の高い方法をお伝えします。
これを知ることであなたは、
- スプレッドシートIDからシート一覧を作成できます。
- 複数のスプレッドシートのシート一覧を作成できます。
なので、サクッとマスターして
と答えてあげてください。
今回は、上記記事のスクリプトを元に複数のスプレッドシートに
対応するように変更していきます。
動画はこちら
シートはこちら
*クリックすることでシートが開きます。(コピーしてお使いください)
スクリプト
/**
* 複数スプレッドシートIDからスプレッドシートの一覧を取得する
*/
function getmultihyperlink() {
const sh = SpreadsheetApp.getActiveSheet()
for (let i = 2; i < 10; i++) {
//2行目からスプレッドシートIDを読み込む
let id = sh.getRange(i, 1).getValue()
console.log(id)
if (id == "")
break
makehyperlink(id,i)
}
}
//リンク付きシート一覧の作成
function makehyperlink(id, col) {
const DSP_ROW = 2 //表示開始行
const DSP_COL = col //表示する列
// const ss = SpreadsheetApp.openById("1BfbeQUYsveJmn1kPUV5A1l30HO8lHM3v11I4OptM6Io")
const ss = SpreadsheetApp.openById(id)
const url = ss.getUrl()
const sheets = ss.getSheets() //すべてのシートを取得
const hlinks = sheets.map(sheet => {
const sheeturl = `${url}#gid=${sheet.getSheetId()}`
const hlink = `=HYPERLINK("${sheeturl}","${sheet.getName()}")`
return ([hlink])
})
console.log(hlinks)
//現在開いているシート
const nowsheet = SpreadsheetApp.getActiveSheet()
nowsheet.getRange(DSP_ROW, DSP_COL, hlinks.length).setValues(hlinks)
//スプレッドシート名を表示
nowsheet.getRange(DSP_ROW - 1, DSP_COL).setValue(ss.getName())
}
主な変更箇所
任意のシートに変更
ss.getSheetByName("管理シート").getRange(2,6,hlinks.length).setValues(hlinks)
“管理シート”とシート名で読み込むようになっていたので、
SpreadsheetApp.getActiveSheet()
を使用して、現在開いているシートに出力するように変更しました。
スプレッドシートIDから読み込むよう変更
SpreadsheetApp.openById
を使用して、スプレッドシートIDから読み込むよう変更しました。
スプレッドシートIDと表示位置(列)を引数にする
スプレッドシートIDと表示位置(列)引数にしました。
function makehyperlink(id, col) {
スプレッドシートからスプレッドシートIDを読み込む
スプレッドシートからスプレッドシートIDを読み込む
シート一覧を出力しさらにループさせるようにしました。
for (let i = 2; i < 10; i++) {
//2行目からスプレッドシートIDを読み込む
let id = sh.getRange(i, 1).getValue()
console.log(id)
if (id == "")
break
makehyperlink(id,i)
}
ご不明点があれば、お気軽にご質問ください。
最後までご覧いただきありがとうございます。
つぎはこちら
【GAS】メールアドレスの一覧からGmailを送信する方法