created: 2022-01-27T08:44:58.000Z

nodejs の `google-spreadsheet` を使ってスプレッドシートを更新する

SpreadSheetとGCPの認証認可については、以前にこちらに書いた。

今回は nodejs の google-spreadsheet を使ってシートを更新する

実装例

string[][] を使って、対象のシートをその内容で上書きするという実装。

import { GoogleSpreadsheet } from "google-spreadsheet";
import cred from "./cred.json";
export const SHEET_ID = "xxxxxxxxxx";

export class Doc {
  constructor(private doc: GoogleSpreadsheet) {}

  static async from(sheetId: string) {
    const doc = new GoogleSpreadsheet(sheetId);
    const { client_email, private_key } = cred;
    await doc.useServiceAccountAuth({ client_email, private_key });
    await doc.loadInfo();
    return new Doc(doc);
  }

  async updateAsRenewSheet<Row = any>(sheetTitle: string, header: string[], body: Row[]) {
    if (!header.length || !body?.length) {
      throw Error(`It seems to passed empty header or empty body`);
    }
    let sheet = this.doc.sheetsByTitle[sheetTitle];
    if (sheet == null) {
      await this.doc.addSheet({ title: sheetTitle });
      sheet = this.doc.sheetsByTitle[sheetTitle];
    } else {
      await sheet.clear();
    }
    await sheet.setHeaderRow(header as any);
    await sheet.addRows(body as any);
  }
}

参考

他にも色々シートを操作するメソッドが実装されている。