私は、基本的な概要、いくつかのアドバイス、およびいくつかの助けてくれるリソースを手伝ってくれますが、全部を書くことを期待していません。
ステップ1 - カスタムメニューオプション
を作成するには、スプレッドシートからあなたのスクリプトにアクセスできるようにしたいでしょう。これを行うには、カスタムメニューオプションを作成します。 article by google on custom menusです
Googleでは単純なトリガーonOpen
を使用していますが、私はinstallable triggersがより信頼できると判断しました。
ステップ2 - ゲットユーザ入力が
従業員のIDを入力するよう求められていいことと、それは魔法だスクリプトの仕事を持っているでしょう。スクリプトのユーザー入力を取得する方法については、article by google on dialogs and sidebarsを参照してください。
ステップ3 - 読み、あなたがSpreadsheetApp
とspreadsheeetデータにアクセスすることができ
スプレッドシートからデータを書き込みます。カスタムメニューからスクリプトを呼び出す場合は、SpreadsheetApp.getActiveSpreadsheet
を使用できます。ただし、スクリプトエディタでコードをテストする場合は、「アクティブなスプレッドシート」がないので、代わりにSpreadsheetApp.openById
を使用してください。スプレッドシートへのアクセス権を持つ
、あなたが呼び出すことができます。
spreadsheet.getSheetByName("name").getRange(1, 1, 2, 2).getValues();
spreadsheet.getSheetByName("name").getRange(1, 1, 2, 2).setValues([[1, 2], [3, 4]]);
注2次元アレイとgetValues
とsetValues
作業が
WARNINGをすることを - いつものように、I/Oががかかります処理時間が余分にgetRange().XetValues
を呼び出すのを避けるために、このgoogle article about appscript best practicesがより詳細に入る。また、出席シートがたくさんある場合、それらを1つに集約することを検討することもできます。
ステップ4 - 適切なシートを取得
あなたは出席シートであるスプレッドシート内のシートを区別するために何らかの方法必要があります:
function isAttendanceSheet(sheet) {
return /Magical regex/.test(sheet.getName);
}
var sheets = spreadsheet.getSheets().filter(isAttendanceSheet);
あなたのために働く魔法の正規表現思い付きますこれでフィルタリングされます。
希望と幸運を願っています!
私はそれのためのカスタム関数を書く必要がありますね。データの総量が利用可能なRAMに収まるのに十分小さい場合は、すべての情報をjavascriptオブジェクト/配列に読み込み、適切な形式で整理シートに書き込むことができます。 – SpiderPig
@SpiderPigカスタムシート関数は、 'SpreadsheetApp'サービスのように、匿名ユーザーとして実行される認証を必要とするサービスを利用できません。詳細はこちらをご覧ください:https://developers.google.com/apps-script/guides/services/authorization –