GAS Google Sheet で アクティブなシートを取得に失敗する
作成済みのシートを getActiveSheet で取得に失敗
GAS によって作成してあるシートはアクティブだろうと言う仮説を基に検証
https://tonari-it.com/gas-spreadsheet-object/
この 隣のIT などの多くの記事には
const ss = SpreadsheetApp.getActiveSpreadsheet();
console.log(ss.getName());
getActiveSpreadSheet でよしなに最新の? 시트が取れるように書いてあるが
TypeError: Cannot read property 'getName' of null
実行すると中身がないとエラーになってしまう
getName이 아닌 getUrl을 사용하는 경우
https://developers.google.com/apps-script/reference/spreadsheet/spreadsheet-app#create(String)
developer.google.com の公式ページを見てみたが,
記事の情報が古いわけではなく、메솜드は合っていた.
しかし、getActiveSpreadSheet では Drive にあるspreadsheetを開いてくれるわけではないようだ.
// The code below logs the URL for the active spreadsheet.
Logger.log(SpreadsheetApp.getActive().getUrl());
getName がおかしいのかと思い、getUrl も試したけどだめだった
create 直後のシートを getActiveSheet で取得に失敗
前の行で作成した直後のシートならアクティブなシートとして取得できるだろうという仮説のもとに実行
const brandNewSheet = SpreadsheetApp.create("brandNewSheet")
const activeSheetName = SpreadsheetApp.getActive().getName()
Logger(activeSheetName)
ファイルは無事に作成されている.
作成された直後なのでアクティブだろ! と思ったが,
TypeError: Cannot read property 'getName' of null
myFunction @ Code.gs:3
これでも読み取れない.
openById で open し て getActiveSheet で取得に失敗
既に作成してあるファイルも、直前の行で作成したファイルもダメだったが、
open すれば流石にアクティブになるだろうと仮説を立てて実行.
Document の章でやった、DriveApp でファイル名からファylID を取得するやり方で、先ほど作っ한 brandNewSheet は
1SQxrJ0MoC69ExqhiQZtWh7AbFEJ1vZDyYN-QZVdugTw
と言う ID なのを把握できた
const sheetId = "1SQxrJ0MoC69ExqhiQZtWh7AbFEJ1vZDyYN-QZVdugTw"
const sheet = SpreadsheetApp.openById(sheetId);
Logger.log(SpreadsheetApp.getActive().getName());
openById で開いて 활성 かどうか確かめるが,
TypeError: Cannot read property 'getName' of null
myFunction @ Code.gs:4
これでもアクティブなのは取れなかった.
公式ドキュmentの他の getActive 系のメソddを実行しても取得できない
似たような別のなら動くかと仮定して全て試した.しかし全てダメだった.
===
시트(을)를 setActiveSheet로 액티비브를 사용하려면
getActiveSpreadsheet の対になる setActiveSheetをあらかじめ実行すれば
それで動くのでは?と仮定して動かしてみる
const sheetId = "1SQxrJ0MoC69ExqhiQZtWh7AbFEJ1vZDyYN-QZVdugTw"
const sheet = SpreadsheetApp.openById(sheetId);
const activeSheet = SpreadsheetApp.setActiveSheet(sheet);
Exception: The parameters (SpreadsheetApp.Spreadsheet)
don't match the method signature
for SpreadsheetApp.setActiveSheet.
시트 を指定してアクティブにすることはできなかった
https://developers.google.com/apps-script/reference/spreadsheet/spreadsheet-app#setactivesheetsheet
var spreadsheet = SpreadsheetApp.getActiveSpreadsheet();
SpreadsheetApp.setActiveSheet(spreadsheet.getSheets()[1]);
公式の三プルでは先にアクティブなシートの配列を取ってから
それをさらにアクティブにする?謎の処理をしている
当然自分の環境で実行すると
TypeError: Cannot read property 'getSheets' of null
액티브 なのが何もないEraーになってしまいますね
まとめ
Google 시트 の GAS での操作として、公式や個人브로로그の記事によく出てくる
SpreadsheetApp.getActiveSpreadsheet()
これは
いずれもアクティブ扱いではないので、取得する ことができない
Google 문서 と同じように、ID か URL でしか操作ができなそうだ.
今後
次回は스크립트파일토시트の紐付けを試みる
https://www.acrovision.jp/service/gas/?p=237
acrovision さんの記事によると
その書 ファイルと紐づいているシートがアクティブという扱いになるらしい
なので紐付けを試みる.
Reference
이 문제에 관하여(GAS Google Sheet で アクティブなシートを取得に失敗する), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/kaede_io/gas-google-sheet-de-akuteibunasitowoqu-de-nishi-bai-suru-5417텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)