今回やること
2022年になりましたので、鑑賞履歴を新しくします。
今年用の「映画鑑賞記録」を作成
新しい年になったら、新しい「映画鑑賞記録」(スプレッドシート)を準備します。
① 2021年の「映画鑑賞記録」をコピーして、新しいスプレッドシートファイルを
作成します。ファイル名は任意で構いません。
② ①で作成した「映画鑑賞記録」の[鑑賞履歴]シートのデータをクリアします。
![[鑑賞履歴]シート.png](https://qiita-user-contents.imgix.net/https%3A%2F%2Fqiita-image-store.s3.ap-northeast-1.amazonaws.com%2F0%2F510221%2F46024f09-bee6-4237-a022-5d30a85f1eaf.png?ixlib=rb-4.0.0&auto=format&gif-q=60&q=75&s=ff7afa2aadd5c1b5edde7f367c808245)
プログラムの設定を、2022年用に追加・修正します。
Config.gs
YearSettingsに2022年の設定を追加します。(下図:1番上の行)
fileIdには、前述で作成したスプレッド-シートのファイルIDを記載します。('zzzzz…zz'部分)
※ファイルID は、スプレッドシートのURLの…/d/と/edit…の間の文字列です。(上図:黄色の部分)
const YearSettings = [
{id: '2022', year: '2022年', fileId: 'zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz'}, // ← この行を追加
{id: '2021', year: '2021年', fileId: 'yyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyy'},
{id: '2020', year: '2020年', fileId: 'xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx'}
]
Vuejs.html
selectedYearの値を'2022年'に変更します。画面の初期表示時に、この値(年)が使用されます。
プログラムの処理としては、Config.gs のYearSettingsのyearとマッチングされます。
var app = new Vue({
el: '#app',
data: {
processingType: '記録追加',
message: 'テスト',
subject: ' 追 加 ',
:
viewingTypes : [],
selectedYear: '2022年', // ← この値を変更する
optionYear: []
},
:
本当は、上記の作業だけで対応できる筈だったのですが、[鑑賞履歴]シートが空だと次のエラーが発生する事が分かりました。

この不具合に対応する為、下記のプログラム修正を行いました。
プログラムの修正
ViewingRecord.gs
getReportListBy()関数を修正します。
①resultsを空の配列で初期化する処理を追加します。
②resultsにデータをセットする処理を、lastRowが3以上の時に実行する様に
変更します。
([鑑賞履歴]シートにデータがある時のみ、resultsにデータをセットする。)
function getReportListBy(cond) {
cond.type = 'viewingRecord';
Logger.log(cond);
var fileId = getFileIdFromYearSettings(cond.year);
var sheet = SpreadsheetApp.openById(fileId).getSheetByName('鑑賞履歴');
var lastRow = sheet.getLastRow();
var results = []; // ← この行を追加する
if(lastRow >= 3) { // ← この行を追加する
results = sheet.getRange(3, 2, (lastRow - 2), 6).getValues(); // ← var を削除
} // ← この行を追加する
return JSON.stringify(results);
}
function getReportListBy(cond) {
cond.type = "viewingRecord";
Logger.log(cond);
var sheet = SpreadsheetApp.openById(ViewingRecordID).getSheetByName('鑑賞履歴');
var lastRow = sheet.getLastRow();
var results = sheet.getRange(3, 2, (lastRow - 2), 6).getValues();
return JSON.stringify(results);
}
結果
エラーが表示されなくなりました。

◆前の記事 GASでWebアプリ「映画鑑賞記録」を作る⑭
◆次の記事 GASでWebアプリ「映画鑑賞記録」を作る⑯