Form.getTitle() は現時点ではnullを返し有効に機能しません。
(Issue trackerより)
→ 公式によって修正され、getTitle()が正常に動作するようになりました
FormApp#getTitle()を使用したコードについては
https://teratail.com/questions/kros5rm95gnx42#reply-2hqbt0gt18ne2m
を参照してください。
下記はgetTitle()のバグ修正前の対応方法として残しておきます。
DriveApp と Form.getId()で代用します。
1.各フォームについて、フォームのスクリプトで下記を記述します。
(スプレッドシートのスクリプトではありません。各フォーム編集画面の右上の縦に並んだ3点マークから「<>スクリプトエディタ」を選択してください)
function onFormSubmit(e) {
//FormApp.getActiveForm();
const ssid = e.source.getDestinationId();
const title = DriveApp.getFileById(e.source.getId()).getName()
SpreadsheetApp.openById(ssid).getActiveSheet().setName(title)
}
※( //FormApp.getActiveForm();のコメントは外しても外さなくてもよいです。権限承認のために必要)
2.トリガーでonFormSubmit関数を、フォーム送信時に実行するように設定します。
3.スクリプトエディタ上で上記コードを1度実行し、必要な権限を承認します。
4.あとは各フォームから(最低1回)回答すれば、フォームタイトルがシート名に変わると思います。
※各フォームタイトルの名前は必ず異なる名前であることを確認してください。同じフォームタイトルから回答すると、同じシート名に変えようとするためエラーになりタイトルは変わりません。
・DriveAppには使用回数制限があるため、他のスクリプトでDriveAppを使っている場合は、タイトルを変えたフォームフォームのトリガーは順次削除した方がよいかもしれません。
(そうしないと回答がある度にトリガーが呼ばれDriveAppの使用回数を消費することになるため)
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2021/10/25 06:03