今回やること
2022年になりましたので、鑑賞履歴を新しくします。
今年用の「映画鑑賞記録」を作成
新しい年になったら、新しい「映画鑑賞記録」(スプレッドシート)を準備します。
① 2021年の「映画鑑賞記録」をコピーして、新しいスプレッドシートファイルを
作成します。ファイル名は任意で構いません。
② ①で作成した「映画鑑賞記録」の[鑑賞履歴]シートのデータをクリアします。
プログラムの設定を、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アプリ「映画鑑賞記録」を作る⑯